2014-12-09 66 views
0

我有一條select語句並返回一列,但返回多行。我想用下面的逗號將它轉換爲單個字符串。如何將行值轉換爲單個字符串

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

這將返回

ASD1 
ASD2 
ASD3 

我想將其轉換爲

'ASD1','ASD2','ASD3' 

我怎樣才能做到這一點的SQL?

+0

您的示例結果不符合'where'條件,至少對於大多數歸類。 – 2014-12-09 13:12:36

回答

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, '') 
+0

這不包括單引號。 – 2014-12-09 13:26:13

0
declare @tmp varchar(250) 
SET @tmp = '' 
select @tmp = @tmp + CODE + ', ' from LG_xxx_CLCARD 
          WHERE CODE < 'KUR' AND CODE > 'CARI1' 
0

試試這個:

SELECT LISTAGG(CODE , ',') WITHIN GROUP (ORDER BY CODE) FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1' 

結果應該是

'ASD1','ASD2','ASD3',..

+0

'list_agg()'不是SQL Server函數。 – 2014-12-09 13:25:42

相關問題