SQL级联不适用于SQL中的case语句

朗姆酒

我想将多行连接成一个文本字符串,但也要使用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
Dimt

在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章