列:我有表 A,他有3个字段  COL1,Col2,Col3  他们的都是 varchar2(10)  我就是想通过Sql获取这个字段长度 “10”我想把表结构当做配置文件进行通信数据的字符串解析,所以必须知道每个列的最大长度是多少小弟不才,请教各位高手!先谢过各位跟帖的帅哥美女!

解决方案 »

  1.   

    求字符串的长度
    length('fffffffffff');--字符数
    lengthb('rrrrrrrrr');--字节数
      

  2.   

    SELECT table_name,column_name,data_length FROM all_tab_columns
    WHERE table_name='A' AND column_name IN ('COL1','COL2','COL3');
      

  3.   


    SELECT data_type,char_col_decl_length FROM USER_TAB_COLUMNS WHERE TABLE_NAME='' AND COLUMN_NAME=''; 
      

  4.   

    如果有N(N>=2)个用户都拥有名为A的表,则必须同时过滤用户。
    SELECT table_name,column_name,data_length FROM all_tab_columns 
    WHERE owner=YOUR_USER_NAME table_name='A' AND column_name IN ('COL1','COL2','COL3');如果只想查自己拥有的列的情况,则直接使用:
    SELECT table_name,column_name,data_length FROM user_tab_columns 
    WHERE table_name='A' AND column_name IN ('COL1','COL2','COL3');
      

  5.   

      to :suiziguo 你的正解,
       但是还有个小问题想再请教一下你,我用table_name='A' 没办法过滤,因为我查询出的表名是这样的“BIN$C6wCFIFiQk2mfQeEWqcF9g==$0” 感觉象乱码,这是怎么回事?
      

  6.   

    注意这里是oracle区,sql的系统表查询方法不必贴了
      

  7.   


    这个是已经回收站里已经删除的表。purge user_recyclebin;清空回收站。