"IS" SQL 列表达式中的服务器无法识别?

"IS" not recognized in SQL Server in column expression?

我的观点的第一行(查询?),基本上是这样做的:

SELECT TOP (100) PERCENT dbo.TableName.Field1
, dbo.TableName.Field2
, IIF(dbo.TableName.Field3 IS NOT NULL, 1, 0) AS SomeAlias

但出于某种原因,它不喜欢“IS”关键字并给我一个无法识别的错误,即使我在 WHERE 子句中放置了一个带有“IS NOT NULL”的随机字段,效果很好。我一直在 MS Access 中做这种事情,是否不允许使用表达式创建列?

IIF 中的条件应该不是问题。

您可以在此处查看 db<>fiddle here 没问题。

但您也可以使用 case :

...
, case when dbo.TableName.Field3 IS NOT NULL then 1 else 0 end AS SomeAlias

您可以改为大小写。

SELECT TOP (100) PERCENT dbo.TableName.Field1
, dbo.TableName.Field2
, (case when dbo.TableName.Field3 IS NOT NULL then 1 else  0 end)  AS SomeAlias
from dbo.TableName