給定表名稱後,我無法讓我逗號分隔列名稱列表。任何參考值得讚賞。逗號分隔的表格列名稱列表
所以我的最終結果應該是oracle中的一個sql語句,當它運行時,會給我一個給定表中列名的逗號分隔列表。 (這樣我就可以複製粘貼到其他地方列表)
編輯:
所以,如果我的表看起來像這樣: 表1(fieidl1,場2,場3)
我期待得到一個字符串像「field1,field2,field3」
所以我可以插入一個單獨的sql語句,以按照該順序從表中選擇字段。
給定表名稱後,我無法讓我逗號分隔列名稱列表。任何參考值得讚賞。逗號分隔的表格列名稱列表
所以我的最終結果應該是oracle中的一個sql語句,當它運行時,會給我一個給定表中列名的逗號分隔列表。 (這樣我就可以複製粘貼到其他地方列表)
編輯:
所以,如果我的表看起來像這樣: 表1(fieidl1,場2,場3)
我期待得到一個字符串像「field1,field2,field3」
所以我可以插入一個單獨的sql語句,以按照該順序從表中選擇字段。
您可以使用來自Oracle數據字典USER_TAB_COLS
和LISTAGG
這樣的:
SELECT LISTAGG (COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID)
FROM USER_TAB_COLS WHERE TABLE_NAME = 'YOUR_TABLE'
'LISTAGG'與11g以上一起使用。最好提到數據庫版本。 – 2014-09-29 18:57:31
@LalitKumarB是的,你是對的 – Aramillo 2014-09-29 19:01:04
select wm_concat(COLUMN_NAME)
from ALL_TAB_COLUMNS
where TABLE_NAME='MyTable';
我的這個解決方案與舊版本的Oracle的工作爲好。 :)
with a as (
select rownum r,column_name from cols where table_name ='TableName')
,b as (
select SYS_CONNECT_BY_PATH(column_name, ',') Fields,rownum rn from a
start with r=1
CONNECT BY PRIOR r = r-1),c as (
select * from b order by 2 desc) select Fields from c where rownum =1
你試過'SET COLSEP,'? – drum 2014-09-29 18:17:55
最好提到數據庫版本。諸如'LISTAGG'之類的功能可以在11g之後使用。 – 2014-09-29 18:56:44