我们有办法从T-SQL中的CASE函数返回多个列吗?我尝试的查询:
SELECT
CASE
WHEN Street IS NOT NULL AND City IS NOT NULL
THEN Name, Surname, Street, City, ZipCode
ELSE BackUpAddr
END
FROM Table
但是不出所料,在“那么”之后,我只被允许进入一列。有什么解决问题的想法吗?
我们有办法从T-SQL中的CASE函数返回多个列吗?我尝试的查询:
SELECT
CASE
WHEN Street IS NOT NULL AND City IS NOT NULL
THEN Name, Surname, Street, City, ZipCode
ELSE BackUpAddr
END
FROM Table
但是不出所料,在“那么”之后,我只被允许进入一列。有什么解决问题的想法吗?
2条答案
按热度按时间zy1mlcev1#
对于要返回的每列,可以使用多个CASE语句:
eaf3rand2#
这里的第一个问题是case表达式中的每个选项产生不同数量的结果。因为这是每行的,所以您要求的结果可能具有不同数量的列。这是不允许的。结果集中的每一行必须具有相同数量(和类型)的列。
CASE
还是其他方法,结果中的列必须一致。没有例外。在选择BackUpAddr
列的情况下,您可能需要为列提供一堆额外的null
值,或者在选择其他列的情况下,需要将所有内容连接成一个长字符串。第二个问题是误解了case表达式实际上就是表达式。这是一个常见的错误。这意味着**case表达式不像过程代码中的
if
块。**相反,case表达式的结果必须始终是单个(标量)值。