我是新來的Oracle數據庫,我不知道我能否找出數據類型和數據大小... 我的意思是:比方說,我有列「位置」類型varchar2(20)在表「產品」中。 我可以寫一個查詢,返回結果「varchar2」和「20」嗎?Oracle獲得列數據大小
謝謝!
我是新來的Oracle數據庫,我不知道我能否找出數據類型和數據大小... 我的意思是:比方說,我有列「位置」類型varchar2(20)在表「產品」中。 我可以寫一個查詢,返回結果「varchar2」和「20」嗎?Oracle獲得列數據大小
謝謝!
select data_type, data_length
from user_tab_columns
where table_name = 'PRODUCTS'
and column_name = 'LOCATION';
SELECT CHAR_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = <TABLENAME> AND COLUMN_NAME = <COLUMNNAME>;
你需要找出一個列的類型和大小的理解數據的目的,或者是你編寫需要知道它在運行的程序?
如果您只需要知道它,SQLPlus中輸入desc tablename
會告訴您有關表中的列。
如果您需要以編程方式查找類型和大小,您使用的是什麼語言... PL/SQL? Java的?
請注意,從USER_TAB_COLUMNS中選擇將只列出您自己的模式中表中的列。對於其他表,您需要查看ALL_TAB_COLUMNS(或DBA_TAB_COLUMNS,如果DBA允許您訪問它)。請注意,您的僱主或客戶可能會禁止存儲的程序或程序包針對其進行編譯。
這個問題的答案對我很有用。但是,當列類型爲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';
我從SQLPLUS以下對於Oracle:
SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND COLUMN_NAME = 'YOUR';
希望你的作品呢!
我忘了在Select子句中添加DATA_TYPE。 – Ketan 2011-02-12 18:31:19