Sql Server 计算列公式语法

8

我想使用一个计算列,如果表中的另一列不为空,它将为true。这个正确的公式是什么?

正确公式:IF(NOT ISNULL(column_name), 1, 0)

HasLabel = computed column (bit)
Label = varchar NULL

以下公式未通过验证,请问我错在哪里? HasLabel的公式为:Label IS NOT NULL
1个回答

26

计算列必须返回一个值,而你只是在进行比较。请尝试使用以下代码:

case when label is null then 0 else 1 end

然而,SQL Server 不会将此视为非空列。要处理这个问题,请将计算更改为:

SQL Server不会理解这个列为非NULL列。为了解决这个问题,请将计算式进行更改:

isnull(case when label IS NULL then 0 else 1 end, 0)

1
或者 ISNULL(CASE WHEN label IS NULL THEN 0 END, 1) 更加简洁。 - Martin Smith
@MartinSmith 这一个更短一些:isnull(case when label > 1 then 1 end, 0) - D'Arcy Rittich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接