T-sql isnull函数介绍
2015-06-01 23:32
218 查看
今天在给同事调取数据的时候,同事反馈说数据偏少,我仔细检查,发现sql语句条件都正确,逻辑没哪里不对,最后经过仔细排查,才发现问题出在null字段上
表中有一列是允许为null值,比如查询名字不为测试的商户名字的记录
我的查询为 name<>'测试'为10行,
select * from test name<>'测试'
检查数据 name='测试' 有90行, 总记录120行,有20行既不满足<>'测试',也不='测试',这20行记录name都是null
如下图所示,一看便明白:
在数据表行记录中,数据列中经常会有记录为null,其实null值表示的是未知数据,即空,表示什么也没有,
但不是我们所说的'',也不是表示数值0,而是表示未知数据。可以理解未知数据的点位符
null值的处理方式与其他值不同
null不能参与比较,因为是未知值,所以不能用在比较运算符后面,
name<>null,name=null,都是不正确的,
null值不能比较运算符,那怎么查询列值是null的呢,
我们必须使用 IS NULL 和 IS NOT NULL 操作符,
如查询名字为null 的用户
查询名字不等于'aaaa'的用户记录:
实际上这里已经用到了isnull函数了,
isnull函数有两个参数,第一参数是要计算的表达式,第二个是当第一个表达式值为空时的替代值。
表中有一列是允许为null值,比如查询名字不为测试的商户名字的记录
我的查询为 name<>'测试'为10行,
select * from test name<>'测试'
检查数据 name='测试' 有90行, 总记录120行,有20行既不满足<>'测试',也不='测试',这20行记录name都是null
如下图所示,一看便明白:
在数据表行记录中,数据列中经常会有记录为null,其实null值表示的是未知数据,即空,表示什么也没有,
但不是我们所说的'',也不是表示数值0,而是表示未知数据。可以理解未知数据的点位符
null值的处理方式与其他值不同
null不能参与比较,因为是未知值,所以不能用在比较运算符后面,
name<>null,name=null,都是不正确的,
null值不能比较运算符,那怎么查询列值是null的呢,
我们必须使用 IS NULL 和 IS NOT NULL 操作符,
如查询名字为null 的用户
--记录为null SELECT COUNT(1) null记录数 FROM dbo.Users u WHERE u .Name IS NULL
查询名字不等于'aaaa'的用户记录:
--正确的名字不等于'aaaa' SELECT * FROM dbo.Users u WHERE ISNULL(u.Name,'')<>'aaaa'
实际上这里已经用到了isnull函数了,
isnull函数有两个参数,第一参数是要计算的表达式,第二个是当第一个表达式值为空时的替代值。
相关文章推荐
- 关于spotlight for Windows和spotlight for oracle的使用
- System.Data.SqlClient 命名空间
- Oracle性能监控脚本(sql)
- Oracle 常用性能监控SQL语句
- oracle锁一些知识
- MySQL,如何修改root帐户密码、如何解决root帐户忘记密码的问题
- day2 - 编写数据库模块
- RMI+JDBC远端数据库的访问
- mysql 小知识
- mysql -源码安装myssql-5.6.17
- PLSQL Developer 常用设置及快捷键
- spring-mongodb-data存储文件
- sqlserver CAST 和 CONVERT函数
- 在OEL 5.8上安装oracle database 10.2.0.1
- Oracle异常恢复前备份保护现场建议—FileSystem环境
- Oracle异常恢复前备份保护现场建议—ASM环境
- MySQL设置默认引擎和字符集
- Oracle之内存结构(SGA、PGA)
- 自己动手 CentOS-6.5 安装Oracle11g R2
- Oracle学习(10):其他数据库对象