如何判断SQL SERVER表中字段为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断SQL SERVER表中字段为空相关的知识,希望对你有一定的参考价值。
sql语句如何判断表中某字段内容为空,或NULL?谢谢
use result select A001 from test where A001='' or A001 is null
这条语句运行结果发现有很多不为空的数据也帅选出来了.请教大虾什么原因。。。。
另外我的A001是datetime类型。。。
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)<1SQL 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 对 varchar、varbinary、text、image、nvarchar 和 ntext 数据类型特别有用,因为这些数据类型可以存储可变长度数据。
2. NULL 的 DATALENGTH 的结果是 NULL。
以上是关于如何判断SQL SERVER表中字段为空的主要内容,如果未能解决你的问题,请参考以下文章
mysql 先判断表中的某一字段 如果为空 插入数据 否则 更新该条数据