登录
首页 >  数据库 >  MySQL

MySQL-正则表达式详解

来源:SegmentFault

时间:2023-01-18 14:11:00 112浏览 收藏

本篇文章向大家介绍《MySQL-正则表达式详解》,主要包括MySQL、正则表达式,具有一定的参考价值,需要的朋友可以参考一下。

和LIKE操作符用法相似,REGEXP告诉MySQL,后面跟的是正则表达式。

基本字符匹配

在正则表达式中 “.” 这个符号表示匹配任意一个字符,例如:

SELECT p_name FROM products WHERE p_name REGEXP '.00' 

这句话就可以匹配500和300等p_name

或匹配

搜索两个串之一,类似SELECT的OR语句

SELECT p_name FROM products WHERE p_name REGEXP '300|500' 

匹配几个字符之一

例如,想要匹配1bill和2bill和3bill,可以这样写:

SELECT p_name FROM products WHERE p_name REGEXP '[1|2|3]bill'

也可以直接简写成:

SELECT p_name FROM products WHERE p_name REGEXP '[123]bill'

匹配字符集和的否定

只用在前面加一个^,例如想找到除了123以外的任何字符:

SELECT p_name FROM products WHERE p_name REGEXP '[^123]'

匹配范围

可以用‘-’结合[]来定义范围,比如[1-3]、[c-g]例如:

SELECT p_name FROM products WHERE p_name REGEXP '[1-3]bill'

匹配特殊字符

匹配特殊字符需要用‘//’来开头,比如匹配‘.’:

SELECT p_name FROM products WHERE p_name REGEXP '//.'

匹配字符类(character class)

📢 不是很常用 :

匹配多个实例

举个例子,如果要同时匹配‘Bill (1 apple)’和‘Bill (8 apples)’:

SELECT p_name FROM products WHERE p_name REGECXP 'Bill \\([0-9] apple?\\)'

关键在于apple和apples的处理,这里用到的是'?',除此之外还有以下这些:

匹配特定位置

以上都是任意位置匹配,下面介绍文本和词的开头或者结尾匹配:
例如,要匹配‘1 apple'8 apple’:

SELECT p_name FROM products WHERE p_name REGECXP '^[0-9] apple'

除了文本开头用'^'结尾用'$'之外,还有这些:


参考:Forta B. MySQL crash course[M]. Pearson Education India, 2006.

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表