暂无图片
Oracle这个sql能查出实际列长度用了多少吗?select 'ABC.C2', max(dbms_lob.getLength(C2)) from ABC;
我来答
分享
暂无图片 匿名用户
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
暂无图片
DarkAthena

先看你想用哪个长度作为计量单位,字符?字节?位?
另外,对于不同的字段类型,就算使用同一个函数,返回的单位也可能不一致,而且,有些字段没必要去查长度,比如char(1)类型。
所以,建议还是把需求细化,查整个库所有表的这种没有任何意义

暂无图片 评论
暂无图片 有用 0
Thomas

首先,要确认你想查的是字段的最大实际长度,所以从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
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏