Sqlplus

如何更改 sql desc 命令的輸出?

  • September 29, 2011

當我做 desc table 時,我得到列 Name, Null? 和類型。我還希望得到一個像 UNIQUE 這樣的列,告訴我該列是否實際上是唯一的。我意識到這是標記為 UNIQUE 的列與標記為該表的主鍵的列(如果存在)的組合。

作為替代方案,我嘗試過:

SELECT 
column_name "Name", 
nullable "Null?",
concat(concat(concat(data_type,'('),data_length),')') "Type"
FROM user_tab_columns
WHERE table_name='TABLE_NAME_TO_DESCRIBE';

我在某處找到的,但是當我用我的表的名稱替換 TABLE_NAME_TO_DESCRIBE 時返回了 0 行。

我從 sqlplus 執行。有什麼辦法可以做到這一點?特定(返回唯一約束)或一般(如何更改 desc 命令結果)答案表示讚賞。

SELECT utc.column_name "Name"
  , utc.nullable "Null?"
  , concat(concat(concat(utc.data_type,'('),utc.data_length),')') "Type"
  , ui.uniqueness
FROM user_tab_columns utc 
LEFT JOIN user_ind_columns uic ON uic.table_name = utc.table_name 
  AND utc.column_name = uic.column_name
LEFT JOIN user_indexes ui ON ui.table_name = utc.table_name
  AND uic.index_name=ui.index_name
WHERE utc.table_name='TABLE_NAME_TO_DESCRIBE';

引用自:https://dba.stackexchange.com/questions/6262