我有一條select語句並返回一列,但返回多行。我想用下面的逗號將它轉換爲單個字符串。如何將行值轉換爲單個字符串
SELECT CODE FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'
這將返回
ASD1
ASD2
ASD3
我想將其轉換爲
'ASD1','ASD2','ASD3'
我怎樣才能做到這一點的SQL?
我有一條select語句並返回一列,但返回多行。我想用下面的逗號將它轉換爲單個字符串。如何將行值轉換爲單個字符串
SELECT CODE FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'
這將返回
ASD1
ASD2
ASD3
我想將其轉換爲
'ASD1','ASD2','ASD3'
我怎樣才能做到這一點的SQL?
使用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, '')
這不包括單引號。 – 2014-12-09 13:26:13
declare @tmp varchar(250)
SET @tmp = ''
select @tmp = @tmp + CODE + ', ' from LG_xxx_CLCARD
WHERE CODE < 'KUR' AND CODE > 'CARI1'
試試這個:
SELECT LISTAGG(CODE , ',') WITHIN GROUP (ORDER BY CODE) FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'
結果應該是
'ASD1','ASD2','ASD3',..
'list_agg()'不是SQL Server函數。 – 2014-12-09 13:25:42
您的示例結果不符合'where'條件,至少對於大多數歸類。 – 2014-12-09 13:12:36