如何解决 select name from a where name like '%%' 当name 为null时,查询不到数据?

我想在name为null的时候了可以查询到数据,我用过where isnull(name,0),可当
like '%0%'时这时的记录是有问题的。各位有方法吗?

这样写就行了:
select name from a where name like '%' or name is null;
解释:%表示任意个数的任意字符(但是不包含null),增加一个or的条件就行了。这样当name 为空时也能查到数据。
不过两个条件一起用时,就相当于查出所有数据了,意义不大。
如果是查询名字中含特定字符或者没有名字的记录就合理了。比如:
select name from a where name like 'A%' or name is null;
查询名字中第一个字母是大写的A的记录,或名字为空的记录追问

谢谢这样当like '%%'里面是空的是可以的,当like 后面有过滤条件就不对了,例如like '%A%',这时就多了is null 的部分
我想要的最终结果为当like为空的时间 列为null的值要查出来,当like不为空的时候,列为null就不用查出来了。
最后想了两个方法
1)当like不为空时才加滤条件
2) where isnull(name,case when '查询变量'=='0' then 1 else '0' end)

追答

感谢分享

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-24
两种方案:
一、select name from a where name like '%%' or name is null
二、select name from a
select name from a where isnull(name,0) like '%0%' 是有问题的,当name不含0的时候,那些记录会被排除掉,查出来的记录要没问题,那这个数据库问题太大了。
第2个回答  2019-01-11
select name from a where isnull(name,0) like '%%'
为null时,随意给个值,然后%%模糊查询就能匹配到了
第3个回答  2012-12-24
那既然你要查name为null或者有值时的数据,还加条件干嘛?直接查呗
select name from a
除非你要查非字符空的
select name from a where name is null or name<>''
第4个回答  2012-12-24
如果是ORACLE,用NVL函数:
select name from a where NVL(name,'0') like '%0%'
你的例子中:
where isnull(name,0),0是数值类型,和'0'是不一样的
改成这样试试:where isnull(name,'0')