sql server 关于空值判定的查询解决思路

sql server 关于空值判定的查询

SELECT * FROM tableName WHERE columnName IS NOT NULL

SELECT * FROM tableName WHERE ISNULL(columnName, '')<>''

--上面两个空值判定的查询语句的区别是什么?

------解决思路----------------------
用方法1效率高
方法2可能会造成用不到索引,具体看执行计划
方法3需要设置执行环境SET ANSI_NULLS ON 
------解决思路----------------------
NULL  不可以用 = 和 <>判断,
SELECT * FROM tableName WHERE ISNULL(columnName, '')<>'' 这个表示当columnName为NULL
SELECT * FROM tableName WHERE columnName IS NOT NULL 表示  columnName不为NULL

呵呵,等待大神解释……


------解决思路----------------------
哦   方法一的效率高哈   学习学习……
------解决思路----------------------
引用:
NULL  不可以用 = 和 <>判断,
SELECT * FROM tableName WHERE ISNULL(columnName, '')<>'' 这个表示当columnName为NULL
SELECT * FROM tableName WHERE columnName IS NOT NULL 表示  columnName不为NULL

呵呵,等待大神解释……

NULL  不可以用 = 和 <>判断?

需要设置执行环境 语句执行前加 SET ANSI_NULLS ON;
------解决思路----------------------
引用:
引用:

用方法1效率高
方法2可能会造成用不到索引,具体看执行计划
方法3需要设置执行环境SET ANSI_NULLS ON

我在用SELECT * FROM tableName WHERE columnName IS NOT NULL查询时它把空行都查询出来了啊,
SELECT * FROM tableName WHERE ISNULL(columnName……

空字符不等于空值,如果要同时排除

建议用columnName IS NOT NULL or columnName>''这类写法通常用到索引

isnull(columnName,'')>''