我正在尝试选择一个布尔表达式。
这不起作用:
select *,
(Column = 'x') as isX
from MyTable;
-- Incorrect syntax near '='.
但这样做:
select *,
IIF(Column = 'x', 1, 0) as isX
from MyTable;
我认为第一个解决方案应该有效。
是否有比使用IIF
更优雅的解决方案?
答案 0 :(得分:6)
不,有几个可能的原因:
=
也用于为变量赋值,因此在某些情况下语法会不明确:
DECLARE @var INT
SELECT @var = 0 -- do you mean "set @var to 0" or "select true if @var IS 0"?
SQL中不是本机布尔类型 - BIT
是最接近的模拟类型。
另一个(更标准)选项是CASE:
select *,
CASE WHEN Column = 'x' THEN 1 ELSE 0 END as isX
from MyTable;