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

Jos*_*tra 0 sql select ssms

我试图选择一个布尔表达式.

这不起作用:

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

-- Incorrect syntax near '='.
Run Code Online (Sandbox Code Playgroud)

但这样做:

select *,
    IIF(Column = 'x', 1, 0) as isX
from MyTable;
Run Code Online (Sandbox Code Playgroud)

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

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

D S*_*ley 6

不,由于一些潜在的原因:

  • = 也用于为变量赋值,因此在某些情况下语法会模糊不清:

    DECLARE @var INT
    
    SELECT @var = 0   -- do you mean "set @var to 0" or "select true if @var IS 0"?
    
    Run Code Online (Sandbox Code Playgroud)
  • SQL中没有本机布尔类型 - BIT是最接近的模拟类型.

另一个(更标准)选项是CASE:

select *,
    CASE WHEN Column = 'x' THEN 1 ELSE 0 END as isX
from MyTable;
Run Code Online (Sandbox Code Playgroud)