NULLIF与ISNULL的交叉使用
事件源于字词字段拼接,由于不清楚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赋值的同时付给了结果内存。
NULLIF与ISNULL的交叉使用的更多相关文章
- MySql 里的IFNULL、NULLIF和ISNULL用法
MySql 里的IFNULL.NULLIF和ISNULL用法 mysql中isnull,ifnull,nullif的用法如下: isnull(expr) 的用法: 如expr 为null,那么isnu ...
- MySQL中 IFNULL、NULLIF和ISNULL函数的用法
mysql 中 ifnull().nullif().isnull()函数的用法讲解: 一.IFNULL(expr1,expr2)用法: 假如expr1不为NULL,则 IFNULL() 的返回值为ex ...
- MySql 里的IFNULL、NULLIF和ISNULL用法区别
mysql中isnull,ifnull,nullif的用法如下: isnull(expr) 的用法:如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0. mysql> ...
- sql server int 列 NULLIF,isnull 判断是0还是1 ,如果是0就变成1
SELECT ISNULL(NULLIF(col1,0),1) ISNULL: 第一个表达式 是 null 返回 第二个表达式,否则 返回 第一个 , ISNULL(表达式1,表达式2) if(表达 ...
- MySql 里的IFNULL、NULLIF、ISNULL和IF用法
isnull(expr) 的用法: 如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0. 实例: select ISNULL(NULL) 输出结果: ) 输出结果: IFN ...
- SQL Server里的 ISNULL 与 NULLIF
SQL Server 中有两个參数,语法: ISNULL(check_expression, replacement_value) check_expression 与 replacement ...
- SQL Server里的 ISNULL 与 NULLIF(转)
SQL Server 中有两个参数,语法: ISNULL(check_expression, replacement_value) check_expression 与 replacement ...
- 面试篇——mysql
背景:在面试过程中发现很多公司对sql查询有要求,虽然不高,但是简单常见的sql查询必须熟练的掌握,否则一面都无法通过,痛定思痛,必须要深入了解下!!! 注释符号 面试题1 查询没有成绩的学生信息 参 ...
- mysql当查询某字段结果为空并赋值
1 代码 1.1 当当前字段为空,查询结果返回“none”,并且统计出现频率 select case when 字段 is null then 'none' else 字段 end as 字段, co ...
随机推荐
- ui-sref的参数传递
例如:路由配置如下: $stateProvider.state('admin.userList', { url: '/listUser?type&role', //参数必须先在这边声明 tem ...
- springboot学习入门之三---启动原理
3启动原理 3.1启动类 @SpringBootApplication public class Application { public static void main(String[] args ...
- [C#] Microsoft .Net框架SerialPort类的用法与示例
从Microsoft .Net 2.0版本以后,就默认提供了System.IO.Ports.SerialPort类,用户可以非常简单地编写少量代码就完成串口的信息收发程序.本文将介绍如何在PC端用C# ...
- 3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息
跟踪标记:1204/1222 功能及用途: 捕获SQL Server死锁信息,并自动存放到错误日志(ERRORLOG)中. 举例: USE tempdb GO CREATE TABLE t1(id i ...
- 我们是如何拿下Google和Facebook Offer的?
http://posts.careerengine.us/p/57c3a1c1a09633ee7e57803c 大家好,我是小高,CMU CS Master,来Offer第一期学员,2014年初在孙老 ...
- C++实现一个Vector3空间向量类(转)
转自:http://www.2cto.com/kf/201311/260139.html ector2,3,4类在DirectX中都有现成的可以调用,不过要实现其中的功能其实也不难,也都是一些简单的数 ...
- win8中 cmd直接以管理员权限运行
一.组合键 WIN+X 二.锁定到任务栏,方便以后快速启动 三.控制面板->控制中心 四.更改用户账户控制设置--调到最低 好了,点击任务栏的命令提示符
- zabbix对网卡流量超出添加阈值
给网卡设置流量阈值: 配置告警路径: Configuration--Templates--Template OS Linux--Discovery--Network interface discove ...
- C++暑期学习笔记
# C++初步学习笔记 一.命名空间(namespace)相关 1 个人理解: 为了避免整合资源中存在的重名矛盾而采取的区别资源的措施: 2 命名空间的定义: 比如要定义一个命名空间A: namesp ...
- jdk1.5-jdk1.9的主要区别
jdk1.5相对以前jdk版本主要新增功能 1.自动拆箱和装箱 其中基本数据类型的包装类有:Double,Float,Long,Integer,Short,Character和Boolean 2.提供 ...