【SQL】LIKE模糊查询中如何处理NULL值
sql中select是什么意思记录⼀下最近遇到的问题:
我们在sql中要模糊查询某⼀列的结果集时,查询条件应该这样写
select * from 表 where 字段 like '%匹配值%'
但当要查询的匹配值为null时,⽽使⽤SQL语句是查不到正确的结果的。那这是为什么呢?要清楚为什么,就需要了解sql中的三值逻辑了。
在SQL中逻辑表达式的可能值包括TRUE、FALSE和UNKNOWN,它们被称之为三值逻辑。
我们知道,在其它的语⾔中,逻辑表达式只有两种,要么是true,要么就是false。⽽sql中却存在第三个逻辑表达式UnKnown,这个是sql中特有的。从字⾯意思上我们可以解理该值的意思是:什么都不知道,就是什么都不是。⼀般情况下我们将任何值(包括NULL本⾝)与NULL做⽐较的时候,都会返回UnKnown。⽽在查询表达式中(⽐如where与having中),UnKnown会视为false。所以我们就明⽩了为什么
select * from 表 where 字段 like '%匹配值%'查不到正确的结果的原因了。
所以,我们应该使⽤isnull函数来进⾏查询
select * from 表 where 字段 like '%'+ isnull(匹配值,'') +'%'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。