NULLIF与ISNULL的交叉使用
Posted @FuluoQued
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NULLIF与ISNULL的交叉使用相关的知识,希望对你有一定的参考价值。
事件源于字词字段拼接,由于不清楚NULLIF的本质导致惨剧发生。
1 1 Select IsNull(NullIf(‘‘, dbo.f_CTRL_GetAlloy(‘6063‘, ‘T5‘)), ‘6063-T5‘) 2 2 Select IsNull(NullIf(dbo.f_CTRL_GetAlloy(‘6063‘, ‘T5‘), ‘‘), ‘6063-T5‘) 3 4 函数f_CTRL_GetAlloy功能解释:当6063-T5传入时,返回空;其他值传入时,返回两字段相加字段。
以上SQL都有NULLIF/ISNULL依次处理,函数f_CTRL_GetAlloy传回值都为空值,所以NULLIF此时返回的都为NULL。
1 Select NullIf(‘‘, dbo.f_CTRL_GetAlloy(‘6063‘, ‘T5‘)) As NULLIF1 2 Select NullIf(dbo.f_CTRL_GetAlloy(‘6063‘, ‘T5‘), ‘‘) As NULLIF2 得到两个NULL值
此时剩下的SQL
1 Select IsNull(Null, ‘6063-T5‘)
照常理应该得到值
1 6063-T5
但是实际得到两个值,SQL1/SQL2
1 1 Select NullIf(‘‘, dbo.f_CTRL_GetAlloy(‘6063‘, ‘T5‘)) As NULLIF1 = 6 2 2 Select NullIf(dbo.f_CTRL_GetAlloy(‘6063‘, ‘T5‘), ‘‘) As NULLIF2 = ‘6063-T5‘
初步认为NUIFF赋值的同时付给了结果内存。
以上是关于NULLIF与ISNULL的交叉使用的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 的IFNULL()ISNULL()和NULLIF()函数
sql NULL,ISNULL(),NULLIF()。sql
MySQL-ISNULL()IFNULL()和NULLIF()函数
MySQLMySQL的IFNULL()ISNULL()NULLIF()函数用法说明