我可以使用sql server case语句构建一个字符串吗?

时间:2017-02-28 14:07:33

标签: sql sql-server-2008

是否可以在SQL Server 2008中执行类似的操作:

CASE WHEN var1 = 1 THEN 'message 1 ' END as messages
CASE WHEN var2 = 1 THEN 'message 2 ' END as messages 

如果两个变量都为真,则消息将导致message 1 message 2

我确实知道我可以做一个子查询并创建消息,但我很好奇是否可以在没有子查询或with语句的情况下完成。

2 个答案:

答案 0 :(得分:3)

是的,您可以通过连接字符串并在没有内容时使用空字符串来实现。

SELECT
  CASE WHEN @var1 = 1 THEN 'message 1 ' ELSE '' END +
  CASE WHEN @var2 = 1 THEN 'message 2 ' ELSE '' END as messages 

答案 1 :(得分:1)

是的,你可以,你有连接字符串:

CONCAT(
  CASE WHEN var1 = 1 THEN 'message 1 ' END,
  CASE WHEN var2 = 1 THEN 'message 2 ' END
) as messages