在给定表名的情况下,我无法使用逗号分隔的列名列表。任何参考文献表示赞赏
所以我的最终结果应该是oracle中的一个sql语句,在运行时,会给出一个逗号分隔的给定表中的列名列表。 (所以我可以将列表粘贴到别处)
修改
所以如果我的表看起来像这样: 表1(fieidl1,FIELD2,字段3)
我希望得到一个像“field1,field2,field3”
这样的字符串所以我可以插入一个单独的sql语句,按顺序从表中选择字段。
答案 0 :(得分:11)
您可以使用oracle词典中的USER_TAB_COLS
和LISTAGG
这样的内容:
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;
答案 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'