请教如何通过user_tab_columns得到字段类型

[复制链接]
查看11 | 回复9 | 2009-10-9 08:28:00 | 显示全部楼层 |阅读模式
请教如何通过user_tab_columns得到字段类型
我们知道这个表中的所有字段类型都是分开的:data_type/data_length/data_scale等
请问Oracle自身是否有这样的函数,可以直接得到某个字段的类型,如果varchar2(100)这样的。
如果只有自己写的就算了,这个我已经有简洁版的,谢谢!
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
难道不是用sql去拼写么?
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
可以的,我试了一下,哈哈
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
只能拼接
1select COLUMN_NAME,DATA_TYPE||'('||DATA_LENGTH||')' lx from user_tab_cols
2* where table_name=upper('emp')
SQL>
SQL> /
COLUMN_NAME
LX
------------------------------ --------------------
EMPNO
NUMBER(22)
EMPNAME
VARCHAR2(10)
WORK_YEARS
NUMBER(22)
DEPTNAME
VARCHAR2(10)
或者
SQL> desc emp
名称
是否为空? 类型
----------------------------------------- -------- ----------------------------
EMPNO
NUMBER
EMPNAME
VARCHAR2(10)
WORK_YEARS
NUMBER
DEPTNAME
VARCHAR2(10)
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
我需要的是有没有直接的办法,如果是自己拼装,我下面这个简洁版的已经可以应付最常使用的类型了:
select t.column_id,
lower(t.TABLE_NAME) table_name,
lower(t.COLUMN_NAME) column_name,
lower(t.DATA_TYPE ||
decode(t.DATA_TYPE, 'DATE', '', '(' ||

nvl(t.DATA_PRECISION, t.data_length) ||

nvl2(nullif(t.DATA_SCALE, 0), ',' || t.data_scale, '') || ')')) data_typed
from user_tab_columns t
[ 本帖最后由 regonly1 于 2010-9-26 15:49 编辑 ]
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
都是自己拼接的,没看到有直接能使用的
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
也可以自己写,也可以用get_ddl获取
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
regonly1 发表于 2010-9-26 15:45
我需要的是有没有直接的办法,如果是自己拼装,我下面这个简洁版的已经可以应付最常使用的类型了:
select ...

你好!请教一下,我有个Oracle的表 CLNHXX20140506 想要判断其中 cfrq 字段类型,具体的怎么写?请指教!!!谢谢!!!
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
wkc168 发表于 2010-9-26 15:43
只能拼接
1select COLUMN_NAME,DATA_TYPE||'('||DATA_LENGTH||')' lx from user_tab_cols

你好!请教一下,我有个Oracle的表 CLNHXX20140506 想要判断其中 cfrq 字段类型,具体的怎么写?请指教!!!谢谢!!!
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
只能拼了呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行