逗号分隔的表列名列表

时间:2014-09-29 18:15:51

标签: oracle

在给定表名的情况下,我无法使用逗号分隔的列名列表。任何参考文献表示赞赏

所以我的最终结果应该是oracle中的一个sql语句,在运行时,会给出一个逗号分隔的给定表中的列名列表。 (所以我可以将列表粘贴到别处)

修改

所以如果我的表看起来像这样: 表1(fieidl1,FIELD2,字段3)

我希望得到一个像“field1,field2,field3”

这样的字符串

所以我可以插入一个单独的sql语句,按顺序从表中选择字段。

5 个答案:

答案 0 :(得分:11)

您可以使用oracle词典中的USER_TAB_COLSLISTAGG这样的内容:

SELECT LISTAGG (COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID) 
FROM USER_TAB_COLS WHERE TABLE_NAME = 'YOUR_TABLE'

答案 1 :(得分:3)

select wm_concat(COLUMN_NAME) 
from ALL_TAB_COLUMNS 
where TABLE_NAME='MyTable';

答案 2 :(得分:0)

我假设您尝试以* .csv格式导出查询。如果是这样,您可以使用SPOOL命令执行此操作。

SPOOL "C:\file\location\...\file.csv"
SELECT /*csv*/ * from your_table_name;
SPOOL OFF;

有关更多信息,请查看示例here。更多examples

答案 3 :(得分:0)

我的解决方案也适用于旧版本的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

答案 4 :(得分:0)

SELECT RTRIM(XMLAGG(XMLELEMENT(E,COLUMN_NAME,',').EXTRACT('//text()') ORDER BY COLUMN_NAME).GetClobVal(),',')
FROM USER_TAB_COLS WHERE TABLE_NAME = 'YOUR_TABLE_NAME'