如何在 SQL 中 select 一个 true/false 表达式?

How do I select a true/false expression in SQL?

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

这不起作用:

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

-- Incorrect syntax near '='.

但是这样做:

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

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

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

不,有几个潜在的原因:

  • =也用于给变量赋值,因此语法在某些情况下会产生歧义:

    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;