Sql server 围绕NULLIF包装ISNULL
假设我有:Sql server 围绕NULLIF包装ISNULL,sql-server,stored-procedures,isnull,nullif,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),'
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)
这只是在两个应用程序之间进行同步的过程的一部分,问题是standingOrderNumber没有同步,我认为这与此代码部分有关
情景:
输入call和standingOrderNumber后,如下所示:
调用:“”(保留为空)
站立人数:777777
数据存储在一个表中,过程从该表中获取数据并将其显示在应用程序窗体上,问题是,除了此STANDINGORDERNAMBER之外,所有内容都正确显示。
你能告诉我上面提交的逻辑是否出了问题吗?我认为下面这行有问题
when @ID ='2386002' then ISNULL(nullif(i.call,''),i.standingOrderNumber)
在这里,您试图检查i.call
是否为空值,并用空字符串替换它,这使得ISNULL
函数无效
解决方法是在提交表单时,不要在上面一行中使用
NULL如果,它是真的传递了一个空的还是将“”转换为NULL?你是什么意思?哎呀,打字。。。我在空后省略了“string”。也许我错了,我假设这个过程是从表单接收数据的,但现在在重新阅读之后,它似乎是另一种方式。更具体地说,此过程的输入源是什么?查看完整的代码(带有变量声明)也会很有帮助