2016-12-07 101 views
0

我想要得到的列名和數據類型和它的數據類型的長度。作爲例子從識別號差(5)和NUMBER(8,2)USER_TAB_COLUMNS

,如果有一個表

SQL> create table TestTable(
    2 ID     VARCHAR2(4)   NOT NULL, 
    3 CODE    Number(5), 
    4 MyDate    DATE, 
    5 MyNumber   Number(8,2)) 

我需要這樣的東西在some_column分別識別號(5)是一個整數,數(8,2)是一個德桑莫爾值...

我想這

SELECT column_name, data_type, data_length FROM USER_TAB_COLUMNS WHERE table_name = 'some_table' 

但數據長度爲我提供了一個字節長度,所以我想不通的時候有一個像數(5),數字(8,2)的情況下...我需要的是像下面

TABLE_NAME      COLUMN_NAME     DATA_TYPE some_column 
------------------------------ ------------------------------ -------------------------- 
TESTTABLE      ID        VARCHAR2   4 
TESTTABLE      MYNAME       VARCHAR2   5 
TESTTABLE      MYDATE       DATE    - 
TESTTABLE      MYNUMBER      NUMBER   8,2 
財產以後

有幫助嗎?

回答

1

那裏有data_precisiondata_scale列。
請看看這個例子:

create table qwer(
    x number, 
    y number(8,2), 
    z number(5,0), 
    a int, 
    b decimal(5,3) 
); 

SELECT column_name, data_type, data_precision, data_scale 
FROM USER_TAB_COLUMNS 
WHERE Table_name = 'QWER' 
; 

COLUMN_NAME DATA_TYPE DATA_PRECISION DATA_SCALE 
------------- --------- -------------- ---------- 
B    NUMBER  5    3 
A    NUMBER 
X    NUMBER   
Y    NUMBER  8    2 
Z    NUMBER  5    0 

編輯


找到你需要連接兩個字典視圖主鍵列,請參見下面的例子:

CREATE TABLE pk1(
    id int primary key, 
    name varchar2(10) 
); 

CREATE TABLE pk2(
    id int , 
    pk1 number(10,0), 
    pk2 varchar2(5), 
    name varchar2(10), 
    constraint my_composite_pk primary key (id, pk1, pk2) 
); 

SELECT c.table_name, cols.column_name, cols.position 
FROM user_constraints c 
JOIN USER_CONS_COLUMNS cols 
USING (CONSTRAINT_NAME) 
WHERE c.table_name IN ('PK1', 'PK2') 
    and c.constraint_type = 'P' /* P - means PRIMARY KEY */ 
ORDER BY 1,3 
; 

TABLE_NAME COLUMN_NAME POSITION 
---------- ----------- ---------- 
PK1  ID     1 
PK2  ID     1 
PK2  PK1     2 
PK2  PK2     3 
+0

感謝response..this是我wanted.can你告訴我有沒有辦法讓這些列是主鍵或不是 – Noah

+0

我已經通過一個示例更新了答案,如何查找主鍵列 – krokodilko

0

如果這隻用於Geetting信息,那麼只需按下表格名稱上的ALT + F1,這將顯示具有長度和數據類型的列的名稱。

0

爲什麼不y你試試SELECT * FROM information_schema.columns?

它列 「TABLE_SCHEMA,TABLE_NAME列名,ORDINAL_POSITION,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,CHARACTER_OCTET_LENGTH,NUMERIC_PRECISION,NUMERIC_SCALE,DATETIME_PRECISION」 等