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

我想在name为null的时候了可以查询到数据,我用过whereisnull(name,0),可当like'%0%'时这时的记录是有问题的。各位有方法吗?... 我想在name为null的时候了可以查询到数据,我用过where isnull(name,0),可当
like '%0%'时这时的记录是有问题的。各位有方法吗?
展开
 我来答
流浪云风
推荐于2018-03-14 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:920万
展开全部
这样写就行了:
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)
追答
感谢分享
jarlean
2012-12-24 · TA获得超过192个赞
知道答主
回答量:47
采纳率:0%
帮助的人:56.6万
展开全部
两种方案:
一、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的时候,那些记录会被排除掉,查出来的记录要没问题,那这个数据库问题太大了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
深爱公益
2019-01-11
知道答主
回答量:4
采纳率:0%
帮助的人:7083
展开全部
select name from a where isnull(name,0) like '%%'
为null时,随意给个值,然后%%模糊查询就能匹配到了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szm341
2012-12-24 · TA获得超过6725个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5093万
展开全部
那既然你要查name为null或者有值时的数据,还加条件干嘛?直接查呗
select name from a
除非你要查非字符空的
select name from a where name is null or name<>''
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BuddhaQQ
2012-12-24 · TA获得超过1762个赞
知道小有建树答主
回答量:860
采纳率:100%
帮助的人:968万
展开全部
如果是ORACLE,用NVL函数:
select name from a where NVL(name,'0') like '%0%'
你的例子中:
where isnull(name,0),0是数值类型,和'0'是不一样的
改成这样试试:where isnull(name,'0')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式