在NULLIF周围包装ISNULL

时间:2018-06-13 12:34:40

标签: sql-server stored-procedures isnull nullif

假设我有:

 case  
    when @ID ='2386002' then ISNULL(nullif(i.call,''),i.standingOrderNumber)  
    when nullif(rtrim(i.call),'') is null then 
            nullif(rtrim(i.standingOrderNumber), '')
    else case when nullif(rtrim(i.standingOrderNumber),'') is null then rtrim(i.call) 
         else  
            rtrim(i.call)  

这只是在两个应用程序之间进行同步的过程的一部分,问题是standOrderNumber未同步,我认为它必须与此代码部分有关。

方案: 输入call和standingOrderNumber后如下:

  打电话:'' (留空)

     

standingOrderNumber:777777

数据存储在一个表中,过程从该表中获取数据并将其显示在应用程序表单上,问题是,一切都正确显示,除了这个standOrderNumber。

你能告诉我上面提交的逻辑是否出错吗?

1 个答案:

答案 0 :(得分:0)

我认为下面一行有问题,

when @ID ='2386002' then ISNULL(nullif(i.call,''),i.standingOrderNumber)

在这里,您尝试检查i.call是否为null值并将其替换为空字符串,这会使ISNULL函数无效。

解决方法是不要在上面一行中使用nullif