如何在SQL中选择true / false表达式?

时间:2015-05-06 15:15:46

标签: sql select ssms

我正在尝试选择一个布尔表达式。

这不起作用:

select *,
    (Column = 'x') as isX
from MyTable;

-- Incorrect syntax near '='.

但这样做:

select *,
    IIF(Column = 'x', 1, 0) as isX
from MyTable;

我认为第一个解决方案应该有效。

是否有比使用IIF更优雅的解决方案?

1 个答案:

答案 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;