我有一个select语句并返回一列但很多行。我想将其转换为带有逗号的单个字符串,如下所示。
SELECT CODE FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'
返回
ASD1
ASD2
ASD3
我想将其转换为
'ASD1','ASD2','ASD3'
如何在SQL中执行此操作?
答案 0 :(得分:3)
使用STUFF功能:
SELECT STUFF(
(SELECT ',' + CODE
FROM LG_xxx_CLCARD
WHERE CODE < 'KUR' AND CODE > 'CARI1'
ORDER BY CODE
FOR XML PATH ('')), 1, 1, '')
如果您需要单引号,那么以下内容将起到作用:
SELECT STUFF(
(SELECT ',' + '''' + CODE + ''''
FROM LG_xxx_CLCARD
WHERE CODE < 'KUR' AND CODE > 'CARI1'
ORDER BY CODE
FOR XML PATH ('')), 1, 1, '')
答案 1 :(得分:0)
declare @tmp varchar(250)
SET @tmp = ''
select @tmp = @tmp + CODE + ', ' from LG_xxx_CLCARD
WHERE CODE < 'KUR' AND CODE > 'CARI1'
答案 2 :(得分:0)
试试这个:
SELECT LISTAGG(CODE , ',') WITHIN GROUP (ORDER BY CODE ) FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'
结果应为
&#39; ASD1&#39;,&#39; ASD2&#39;,&#39; ASD3&#39;,..