我试图在表中显示所有列的名称,在单行中以逗号分隔,然后将它们保存在变量中。
哪种是最好的方法?
我有这样的人:
SELECT tab.column_name || decode(lead(tab.column_name,1) over (order by tab.column_id),null,'',',')
FROM
all_tab_columns tab,
all_constraints pk,
all_cons_columns pk_det
WHERE
tab.table_name = pk.table_name (+)
and pk.table_name = pk_det.table_name (+)
and tab.owner = pk.owner (+)
and pk.owner = pk_det.owner (+)
and pk.constraint_name = pk_det.constraint_name (+)
and tab.column_name = pk_det.column_name (+)
and tab.data_type not like '%LOB%'
and tab.owner = :OWNER_SOURCE
and tab.table_name = :TABLE_NAME_SOURCE
的结果是:
ID,
_LOCALE,
LABEL,
OBSERVATIONS
但是...我需要这样的方式:
ID,_LOCALE,LABEL,OBSERVATIONS
预先感谢。
您可以使用子字符串函数。请参阅下面的示例代码,涉及如何将行连接到一行
中select SUBSTRING
((
SELECT ', ' + s.Column_name
FROM INFORMATION_SCHEMA.COLUMNS AS s
WHERE TABLE_NAME = N'TBLACCESS'
FOR XML PATH('')
), 2, 1000)
如果要保存在变量中。只需在子字符串中添加变量名。
select @myvariable=SUBSTRING
((
SELECT ', ' + s.Column_name
FROM INFORMATION_SCHEMA.COLUMNS AS s
WHERE TABLE_NAME = N'TBLACCESS'
FOR XML PATH('')
), 2, 1000)