Oracle 模糊查询不区分大小写

纠正 : 网上有好多帖子说可以用regexp_like来做
比如 :
有这么一张表Student

  • name                        sex
  • liMing                        Gril
  • Weiming                    Boy
  • RedWolf                     Boy
  • redmight                    Gril
  • NiNa                          Gril
select s.name
  from Student s
 where regexp_like(s.name,'[M]','i') 
 -- 此处的M写成m也是一样

查询结果 :

  • liMing
  • Weiming
  • redmight

注意 :
这样查询的的确确会把名字包含 “M” 或者 “m” 的数据查询出来 但是 :
查询语句如果这么写

select * 
  from Student s
 where regexp_like(s.name,'[MO]','i') 
 -- 注意 此处MO写成Mo,mO,mo的效果都一样

查询结果 :

  • liMing
  • Weiming
  • RedWolf
  • redmight

结论 : 这种用regexp_like的写法类似加了一个这样一个条件

-- 伪代码
IF t.NAME.Contain(M)||t.NAME.Contain(o)||t.NAME.Contain(O)||t.NAME.Contain(m) THEN RETURN t
-- 任意包含其中忽略大小写字符 即为匹配

那么问题来了 : Oracle 模糊查询不区分大小写 应该怎么写呢?

这么写 :

-- 将字段与匹配条件都转换为大写或者小写再进行查询即可
-- 转为大写
SELECT * FROM Student s WHERE upper(s.name) LIKE upper('%Red%')
-- 或者转为小写
SELECT * FROM Student s WHERE lower(s.name) LIKE lower('%Red%')

这样就行了…

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值