匿名用户Oracle这个sql能查出实际列长度用了多少吗?select 'ABC.C2', max(dbms_lob.getLength(C2)) from ABC;
我想查整个库的所有表该怎么写
我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
匿名用户我想查整个库的所有表该怎么写
查询所有列的长度DATA_LENGTH
select TABLE_NAME,COLUMN_NAME,DATA_TYPE || '(' || DATA_LENGTH || ')'
from dba_tab_columns
-- where owner='SCOTT';
评论
有用 0
先看你想用哪个长度作为计量单位,字符?字节?位?
另外,对于不同的字段类型,就算使用同一个函数,返回的单位也可能不一致,而且,有些字段没必要去查长度,比如char(1)类型。
所以,建议还是把需求细化,查整个库所有表的这种没有任何意义
评论
有用 0首先,要确认你想查的是字段的最大实际长度,所以从USER_TAB_COLUMNS表里是无法取得数据的。举例
create table tb_zxp1 (country varchar2(10),city varchar2(20));
insert into tb_zxp1 values ('China','Beijing');
Table created.
SQL>
1 row created.
SQL> insert into tb_zxp1 values ('China','Nanjing');
1 row created.
SQL> commit;
Commit complete.
SQL> select data_length,column_name from user_tab_columns where table_name='TB_ZXP1';
DATA_LENGTH
-----------
COLUMN_NAME
--------------------------------------------------------------------------------
10
COUNTRY
20
CITY
这里可以看出,COUNTRY字段最大长度是5(CHINA),但从USER_TAB_COLUMNS里查出的是10,这是它的定义长度。所以我还是比较赞成DarkAthena的说法。
评论
有用 0
墨值悬赏