给定表名称后,我无法让我逗号分隔列名称列表。任何参考值得赞赏。逗号分隔的表格列名称列表
所以我的最终结果应该是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