我有一个案例,如果我的列有NULL值或空值我必须返回' -1'。我有NULL检查如下
ISNULL(IEF.Col1,'-1').
如何同时检查空白值和空值(如上所示)。意味着,如果列的空白值仍然在选择-1中,则应返回,如果为NULL,则还应返回-1。
答案 0 :(得分:3)
您可以使用NULLIF
将空处理为null:
ISNULL(NULLIF(IEF.LeadingValue, ''), '-1')
答案 1 :(得分:1)
您可以使用 NULLIF ,如:
select ISNULL(NULLIF(IEF.Col1, ''), -1) AS Col1 from table
如果两个指定的表达式相等,则返回null值。例如,SELECT NULLIF(4,4)AS相同,NULLIF(5,7)AS不同;返回第一列(4和4)的NULL,因为两个输入值相同。第二列返回第一个值(5),因为两个输入值不同。
答案 2 :(得分:0)
isnull中的用例 -
ISNULL( case when IEF.LeadingValue ='' then null else IEF.LeadingValue end ,'-1')
答案 3 :(得分:0)
以下代码应该有效:
ISNULL(NULLIF(RTRIM(LTRIM(IEF.LeadingValue)),''),'-1')
说明:
NULLIF
- 比较两个字符串,如果相同则返回null RTRIM
- 右边修剪,删除字符串中的右边空格LTRIM
- 左侧修剪,删除字符串中的左侧空格答案 4 :(得分:0)
一个小技巧是: - 这只会检查一次值 -
select
case when IEF.Col1 <> '' then IEF.Col1
else '-1'
end
from
IEF;
注意:使用
null
运算符比较<>
值始终会返回false
。