我想将多行连接成一个文本字符串,但也要使用case语句检查一些条件。我的查询总是返回最后一个值,而不是连接所有值。
我的SQL查询如下
DECLARE @str varchar(1000)
SET @str = ''
SELECT @str = @str +
CASE WHEN SUBSTRING(value,CHARINDEX('|',value)+1,LEN(value)) <> '' THEN
'$' +REPLACE(value,'|',' - ')
ELSE
'$' +ISNULL(REPLACE(value,'|',''),'')
END + ', '
FROM dbo.sometable
print @str
在SQL Server中执行行串联的最常见方法是使用 FOR XML PATH
SELECT @str = STUFF((SELECT CASE WHEN SUBSTRING(value,CHARINDEX('|',value)+1,LEN(value)) <> ''
THEN '$' +REPLACE(value,'|',' - ')
ELSE '$' +ISNULL(REPLACE(value,'|',''),'')
END
FROM @t FOR XML PATH('')), 1, 1, '')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句