如何在 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;
我正在尝试 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;