如何解决 select name from a where name like '%%' 当name 为null时,查询不到数据?
我想在name为null的时候了可以查询到数据,我用过whereisnull(name,0),可当like'%0%'时这时的记录是有问题的。各位有方法吗?...
我想在name为null的时候了可以查询到数据,我用过where isnull(name,0),可当
like '%0%'时这时的记录是有问题的。各位有方法吗? 展开
like '%0%'时这时的记录是有问题的。各位有方法吗? 展开
5个回答
展开全部
这样写就行了:
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的记录,或名字为空的记录
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)
追答
感谢分享
展开全部
两种方案:
一、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的时候,那些记录会被排除掉,查出来的记录要没问题,那这个数据库问题太大了。
一、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的时候,那些记录会被排除掉,查出来的记录要没问题,那这个数据库问题太大了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select name from a where isnull(name,0) like '%%'
为null时,随意给个值,然后%%模糊查询就能匹配到了
为null时,随意给个值,然后%%模糊查询就能匹配到了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那既然你要查name为null或者有值时的数据,还加条件干嘛?直接查呗
select name from a
除非你要查非字符空的
select name from a where name is null or name<>''
select name from a
除非你要查非字符空的
select name from a where name is null or name<>''
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是ORACLE,用NVL函数:
select name from a where NVL(name,'0') like '%0%'
你的例子中:
where isnull(name,0),0是数值类型,和'0'是不一样的
改成这样试试:where isnull(name,'0')
select name from a where NVL(name,'0') like '%0%'
你的例子中:
where isnull(name,0),0是数值类型,和'0'是不一样的
改成这样试试:where isnull(name,'0')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询