如何将行值转换为单个字符串

时间:2014-12-09 13:09:02

标签: sql sql-server select

我有一个select语句并返回一列但很多行。我想将其转换为带有逗号的单个字符串,如下所示。

 SELECT CODE FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'

返回

 ASD1
 ASD2
 ASD3

我想将其转换为

 'ASD1','ASD2','ASD3'

如何在SQL中执行此操作?

3 个答案:

答案 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;,..