今天在给同事调取数据的时候,同事反馈说数据偏少,我仔细检查,发现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 的用户

--记录为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函数有两个参数,第一参数是要计算的表达式,第二个是当第一个表达式值为空时的替代值。

T-sql isnull函数介绍的更多相关文章

  1. (转)SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...

  2. (转)SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...

  3. SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...

  4. SQL ISNULL 函数

    sql 中 NULL 值的处理:微软的 ISNULL() 函数用于规定如何处理 NULL 值.NVL(), IFNULL() 和 COALESCE() 函数也可以达到相同的结果.语法ISNULL ( ...

  5. oracle 常用sql字符函数介绍

    常用字符函数介绍 1.ascii 返回与指定的字符对应的十进制数: SQL>select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') ...

  6. SQL IsNull函数详解

    IsNull,计算机语言函数,意思是返回 Boolean 值,指明表达式是否不包含任何有效数据 (Null). ISNULL 使用指定的替换值替换 NULL. IS NULL经常用于组成一个逻辑表达式 ...

  7. SQL isnull函数

    select * from emp;

  8. sql server函数(isnull,charindex,cast,自定义函数)

    SELECT charindex( CAST ( dbo.ufn_IsNullOrEmpty ('109722A3-622D-4FD4-A060-0287C933A89E', a.OUID) AS V ...

  9. 第五篇、常用的SQL语句和函数介绍

    简介: 在使用到sqlite3的时候,常常需要写一些SQL语句,现将常用到的部分语句稍微总结以下,由于个人习惯,关键字用大写. 附: /*简单约束*/ CREATE TABLE IF NOT EXIS ...

随机推荐

  1. 【BFS】Tester Program

    [poj1024]Tester Program Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2760   Accepted ...

  2. 【状压dp】CDOJ1608 暑假集训

    裸的状压的话,很显然……但有一个强大的优化. 就是在枚举决策的时候,固定第一个空位置.可以证明,这样状态数没有减少,但是降低了很多重复访问. 因为你在枚举的时候,总是可以划分为包含第一个空位置的3个位 ...

  3. Problem G: 零起点学算法106——首字母变大写

    #include<stdio.h> #include<string.h> int main(void) { ]; int i,k; while(gets(a)!=NULL) { ...

  4. github之怎么上传本地项目

    github之怎么上传本地项目 以前都是在自己磁盘上的某个目录下,然后打开git bash,来进行把本地的一些文件推到远程github上. 之前的方法步骤: 1.在github上new一个库,然后gi ...

  5. [转]Windows7下如何在MyEclipse更改JSP默认编码

    分步阅读 一般情况下,用MyEclipse创建Web项目,在WebRoot目录下新建JSP页面,页面的编码格式是:ISO-8859-1,而这个编码格式不 可以解决多种语言文本显示问题,特别是中文,容易 ...

  6. openstack-cinder-netapp

    https://communities.netapp.com/docs/DOC-31749 http://docs.openstack.org/havana/config-reference/cont ...

  7. Android从开源到碎片化 开发者叛离的真相

    Android从诞生开始就受到热捧,并日益普及.它有别于以往的手机及移动终端操作系统,其独具的开源性.系统廉价性和提供给第三方大自由度的创新空间,以及不受硬件约束的优势,获得了广大开放社群的支持.但是 ...

  8. Java集合类理解

    深入Java集合学习系列:http://zhangshixi.iteye.com/blog/674856 http://blog.csdn.net/shf4715/article/details/47 ...

  9. C/C++ 宏定义中#、##、#@的区别

    #表示:对应变量字符串化 ##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符 连接符#@:它将单字符标记符变换为单字符,即加单引号.例如: #define B(x) #@x ...

  10. zend 环境

    js智能提示: 安装APTANA组件,最新3.0版本 安装地址:http://download.aptana.com/studio3/plugin/install Aptana 3 不能装 2 的 J ...