NULLIF与ISNULL的交叉使用
2024-08-25 12:42:07
事件源于字词字段拼接,由于不清楚NULLIF的本质导致惨剧发生。
1 Select IsNull(NullIf('', dbo.f_CTRL_GetAlloy('', 'T5')), '6063-T5')
2 Select IsNull(NullIf(dbo.f_CTRL_GetAlloy('', 'T5'), ''), '6063-T5') 函数f_CTRL_GetAlloy功能解释:当6063-T5传入时,返回空;其他值传入时,返回两字段相加字段。
以上SQL都有NULLIF/ISNULL依次处理,函数f_CTRL_GetAlloy传回值都为空值,所以NULLIF此时返回的都为NULL。
Select NullIf('', dbo.f_CTRL_GetAlloy('', 'T5')) As NULLIF1
Select NullIf(dbo.f_CTRL_GetAlloy('', 'T5'), '') As NULLIF2 得到两个NULL值
此时剩下的SQL
Select IsNull(Null, '6063-T5')
照常理应该得到值
6063-T5
但是实际得到两个值,SQL1/SQL2
1 Select NullIf('', dbo.f_CTRL_GetAlloy('', 'T5')) As NULLIF1 = 6
2 Select NullIf(dbo.f_CTRL_GetAlloy('', 'T5'), '') As NULLIF2 = '6063-T5'
初步认为NUIFF赋值的同时付给了结果内存。
最新文章
- Beginning Scala study note(8) Scala Type System
- JavaScript数据类型
- 【python】操作excel——xlrd xlwt xlutils
- r8 - ASC 41(俄罗斯多校)
- 日常UVA题目英语积累
- 为什么模板函数的声明和实现都放在.h文件中
- HttpUtility.HtmlEncode 方法
- @Factory和@DataProvider的区别
- Winform模拟post请求和get请求登录网站
- HDU 5832 A water problem
- Day 3 @ RSA Conference Asia Pacific & Japan 2016 (morning)
- 在Win7的IIS上搭建FTP服务及用户授权——转载!!
- VM 映像 PowerShell 教学系列博客文章
- (89C51)定时器计时1s
- Leetcode 高精度 Plus One
- 使用pscp命令在Windows与linux之间拷贝文件
- PHP通过get方法获得form表单数据方法总结
- Hibernate学习(九)———— 二级缓存和事务级别详讲
- Mysql5.7实现主从复制、基于GTID的主从复制、并行复制
- MySQL--线程池(Thread Pool)