如果列具有空值或空值,则指定-1

时间:2017-09-12 09:38:35

标签: sql-server isnull isnullorempty

我有一个案例,如果我的列有NULL值或空值我必须返回' -1'。我有NULL检查如下

ISNULL(IEF.Col1,'-1').

如何同时检查空白值和空值(如上所示)。意味着,如果列的空白值仍然在选择-1中,则应返回,如果为NULL,则还应返回-1。

5 个答案:

答案 0 :(得分:3)

您可以使用NULLIF将空处理为null:

ISNULL(NULLIF(IEF.LeadingValue, ''), '-1')

答案 1 :(得分:1)

您可以使用 NULLIF ,如:

select ISNULL(NULLIF(IEF.Col1, ''), -1) AS Col1 from table

来自Microsoft Website

  

如果两个指定的表达式相等,则返回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;

[ SQL Fiddle Demo]

  

注意:使用null运算符比较<>值始终会返回false