我是Oracle数据库的新手,我想知道我是否可以找到数据类型和datasize ... 我的意思是:假设我在表“products”中有varchar2(20)类型的列“location”。 我能写一个会在结果“varchar2”和“20”中返回我的查询吗?
谢谢!
答案 0 :(得分:25)
select data_type, data_length
from user_tab_columns
where table_name = 'PRODUCTS'
and column_name = 'LOCATION';
答案 1 :(得分:5)
您是否需要找出列的类型和大小以便理解数据,或者您是否正在编写需要在运行时了解的程序?
如果您只需要知道它,在SQLPlus中键入desc tablename
将告诉您表中的列。
如果您需要以编程方式查找类型和大小,您使用的是哪种语言... PL / SQL?爪哇?
请注意,从USER_TAB_COLUMNS中选择只会列出您自己架构中的表中的列。对于其他表,您需要查看ALL_TAB_COLUMNS(或DBA_TAB_COLUMNS,如果DBA允许您访问它)。请注意,您的雇主或客户可能会禁止编译存储过程或程序包。
答案 2 :(得分:2)
SELECT CHAR_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = <TABLENAME> AND COLUMN_NAME = <COLUMNNAME>;
答案 3 :(得分:1)
这个问题的答案对我有用。但是,当列类型为NVARCAHR2
时,在获取data_length时需要考虑一个重要的区别。为NVARCHA2
列返回的data_length加倍。
这是由于使用了字符编码。 Oracle documentation说:
对于AL16UTF16,字节数最多可以是两倍 编码和UTF8编码的三倍大小。
因此,理想的查询将如下:
select table_name, column_name,
data_type, NVL(char_col_decl_length, data_length)
from user_tab_columns where table_name='T51_NOCOMP';
答案 4 :(得分:1)
我从sqlplus for oracle执行以下操作:
SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND COLUMN_NAME = 'YOUR';
希望它也适合你!