如何判断SQL SERVER表中字段为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断SQL SERVER表中字段为空相关的知识,希望对你有一定的参考价值。

sql语句如何判断表中某字段内容为空,或NULL?谢谢
use result select A001 from test where A001='' or A001 is null
这条语句运行结果发现有很多不为空的数据也帅选出来了.请教大虾什么原因。。。。
另外我的A001是datetime类型。。。

use result
select A001 from test where A001 is null
这个是最标准的判断字段为空的查询。
因为是datetime类型,所以空只能是NULL的情况,不会出现''情况,而且''的情况只能是字符型才可能会有的情况。A001='' 本身就是错误的使用,因为字段是datetime类型。
所以你只需要使用select A001 from test where A001 is null来看看结果。
参考技术A sql server 中使用 is null 或 is not null 来处理列的空值。

语法为:
列名 is null (字段为空返回true ,不为空返回 false)
列名 is not null (字段为空返回false,不为空返回 true)

例:
select case when a is null then 1 else 0 end from aaa

语法大意:如果a列 为空显示1,不为空显示0
参考技术B use result select A001 from test where A001='' or isnull(A001,'2011-1-1')='2011-1-1' 你看看这样行不行 参考技术C SQL server里,01/01/1900 12:00:00 AM 也视为空 ('',不是null)追问

没错 就是搜出这个东西来了。。。我知道''这个不是NULL,当我执行
use result select A001 from test where A001='' 时,就会出来你说的那种情况,是不是就想楼上那位说的datetime类型只能 用null来判断为空,还是。。。
再问个问题,如果对这种类型的字段不输入日期,只输入空格键会出现什么 谢谢

追答

空格键 也一样是01/01/1900 12:00:00 AM
你要考虑这里的01/01/1900是不是用户输入空格造成,结果变成01/01/1900?
如果这样,那么你这个sql也没有错(因为你本来就是想找出用户的空白输入)

追问

好的 谢谢你

本回答被提问者采纳
参考技术D where len(A001)<1

SQL SERVER 如果判断text类型数据不为空

一个字段Remark的数据类型设置先设置为varcharr(255),后来考虑到扩展性需要将其定义为TEXT类型,但是SQL 语句报错。
      SQL 语句:
      SELECT * FROM TABLE  WHERE  ISNULL(Remark,‘‘)<>‘‘ 
      报错信息:数据类型 text 和 varchar 在 not equal to 运算符中不兼容。
      解决办法:使用datalength(字段名)函数 
                        SELECT * FROM TABLE  WHERE  ISNULL(datalength (Remark),0) >0 
      
      注释:1.DATALENGTH 对 varcharvarbinarytextimagenvarchar  ntext 数据类型特别有用,因为这些数据类型可以存储可变长度数据。                
                 2. NULL 的 DATALENGTH 的结果是 NULL。









以上是关于如何判断SQL SERVER表中字段为空的主要内容,如果未能解决你的问题,请参考以下文章

sql server的sql语句怎么判断一个字段是不是为空

php判断mysql数据库是不是为空

mysql 先判断表中的某一字段 如果为空 插入数据 否则 更新该条数据

判断字符串为空为 null 为 whitespace 工具类

【SQL】表中的空字符串与NULL中的区别何在

java判断字符串是不是为空