温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

发布时间:2021-10-25 10:23:24 来源:亿速云 阅读:150 作者:柒染 栏目:大数据

MYSQL从正则查询扯到查询中的大小写敏感的解决方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

 

MYSQL 中的查询给人的观念大多是简单的,不复杂的,将复杂的事情都交给程序来做,数据库就是一个容器的概念或一个固化的观念。

其实随着MYSQL8 的到来,越来越多以前不能在SQL 端执行的语句,可以在MYSQL中执行,例如CTE ,窗口函数,等等,而查询中有的是使用like来查,而LIKE 的查询中有一些查询比较复杂,而正则表达式在SQL 查询中的使用可以帮助一些复杂查询的表达和实现。总结起来,MYSQL 正在从街边的小屁孩,变成那个拒绝钢铁侠出席会议的蜘蛛侠。(如果你最近看了MYSQL 8.017 的那个版本的变化)

怎么能进行这样的查询,我们来看下面几个例子

1 如我们要查询  employees 表中 first_name 是 G 开头的名字的人有多少

这里我们可以使用 Rlike 来操作 正则表达式

select count(*) from employees where first_name RLIKE '^G';   

这里G 开头的 first_name 的人有 1万6千多人

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

 下面有一个需求,想找到 G 大小开头的,中间是字母的 结尾是 i 的 firstname 

下面的语句应该能满足你的需求

select * from employees where first_name RLIKE '^G[a-z]' and first_name RLIKE 'i$'

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

3 查询 G 开头 uo 在 第二第三 字符位置的 first_name

select * from employees where first_name RLIKE '^G[uo]{2,3}';

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

4  而实际当中面临的一些问题,有的时候也需要使用正则表达式来解决

例如 下图,我们遇到 first_name  写法有些怪异但如果按照平时的查询的方法,会将他们一股脑的都查询出来

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

select * from employees where first_name = 'georgi';   

我们使用上面的语句来查询,结果可想而知,会不区分大小写来将所有的Georgi  gEORGI 都查出来

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

其实在早期的MYSQL 的版本 5.X 之前 正则表达式是可以区分大小写的

但现在的版本是不能区分的。

如何让目前的正则表达式能区分出大小写

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

我们可以在 你要查询的字段名前加上 binary 然后匹配正常的正则,你就可以查到你要查的数据了,请见上图

那么问题来了,题目说扯到大小写敏感,你上面那个能算是扯到大小写敏感吗,如果我不用正则表达式,或者我不愿意在字段前面加binary ,你怎么解决我大小写敏感的问题。

说扯咱们就扯,直接跳到疗效,看我下边没有使用 binary哟,照样扯到,不不不 是查到了 数据。

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

不用正则也可以

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

有人可能马上说,你表里就那一条记录吧,来看下图,当然不是

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

问题就扯出来了,到底我搞了什么,让MYSQL first_name 大小写敏感了

答案就在图里面,修改字段后面加binary 就可以了

MYSQL从正则查询扯到查询中的大小写敏感的解决方法

好的今天就扯到这里。

关于MYSQL从正则查询扯到查询中的大小写敏感的解决方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI