手机版

正则表达式在MySQL中的使用

时间:2021-10-01 来源:互联网 编辑:宝哥软件园 浏览:

我以前用喜欢找数据。后来发现mysql也有正则表达式,性能比like好。我来和大家分享一下mysql REGEXP正则表达式的详细解释。希望这个方法对你有帮助。

MySQL是由亨利斯潘塞的正则表达式实现的,其目标是符合POSIX 1003.2。见附录c:谢谢。MySQL采用扩展版本来支持在SQL语句中与REGEXP运算符一起使用的模式匹配操作。参见3.3.4.7部分,“模式匹配”。

本附录总结了MySQL中可用于REGEXP操作的特殊字符和结构,并给出了一些例子。本附录不包含亨利斯潘塞的regex(7)手册页中的所有细节。手册页包含在MySQL源代码发行版中,位于regex目录下的regex.7文件中。

正则表达式描述一组字符串。最简单的正则表达式是没有任何特殊字符的正则表达式。例如,正则表达式hello匹配hello。

非平凡正则表达式采用特殊的结构,因此它们可以与多个字符串匹配。例如,正则表达式hello|word匹配字符串hello或字符串word。

作为一个更复杂的例子,正则表达式B[an]*s匹配以下任何一个字符串:香蕉、Baaaaas、Bs以及任何其他以B开头、s结尾并包含任意数量的a或n个字符的字符串。

以下是可用于带有REGEXP运算符的表的模式。

例如,在用户表中找到电子邮件格式不正确的用户记录:

从电子邮件不是正则表达式的用户中选择*[a-z0-9]。_ %-][电子邮件保护] [a-z0-9。-].[a-z] {2,4 } $ ' MySQL数据库中正则表达式的语法主要包括各种符号的含义。

()字符

匹配字符串的起始位置,例如,“a”表示以字母a开头的字符串.

mysql选择“xxxyyy”regexp '^xx';-| ' xxxyy ' regexp ' xx ' | |-| 1 |。

($)字符

匹配字符串的结束位置,例如,“X”表示以字母X结尾的字符串.

(.)的性格。

这个字符是英语中的一个点,它匹配任何字符,包括回车、换行符等。

(*)字符

星号匹配0个或更多字符,并且它前面必须有内容。例如:

mysql选择' xxxyyy ' regexp ' x *在这个SQL语句中,规则匹配为真。

()字符

加号匹配1个或1个以上的字符,并且它前面必须有内容。加号的用法与星号类似,只是星号允许出现0次,加号必须至少出现一次。

(?)字符

匹配问号0或1次。

示例:

根据上表,可以安装各种类型的SQL查询来满足需求。在这里列出一些理解。假设我们有一个名为person_tbl的表和一个名为name的字段:

找出所有以“st”开头的名字。

mysql从person_tbl中选择名称,其中名称regexp '^st';查找所有以“ok”结尾的名称。

MySQL SELECT name FROM person _ TBL WHERE name REGEexp ' ok $ ';找到姓名信封“mar”的所有字符串。

MySQL SELECT name FROM person _ TBL WHERE name REGEexp ' mar ';找到所有以元音开头,以“ok”结尾的名字。

mysql从person_tbl中选择名称,其中名称regexp '^[aeiou]|ok$';正则表达式中的可以使用以下保留字。

^

匹配的字符串以下面的字符串开始。

mysql选择“fonfo”regexp '^fo$';-0(表示不匹配)mysql选择“fofo”regexp '^fo';-1(用于匹配)$

匹配的字符串以前一个字符串结尾。

mysql选择“Fono”regexp '^fono$';-1(用于匹配)mysql选择“fono' REGEXP '^fo$ $ ”;-0(不匹配)。匹配任何字符(包括新行)。

mysql选择“fofo”regexp '^f.*';-1(用于匹配)mysql选择“fonfo‘regexp '^f.* *”;-1(用于匹配)a*

匹配任意数量的a(包括空字符串)。

mysql选择“ban”regexp '^ba*n';-1(用于匹配)MySQL选择“baan”regexp“ba * n”;-1(用于匹配)MySQL选择“bn”regexp“ba * n”;-1(用于匹配)a

匹配任意数量的a(不包括空字符串)。

mysql选择“ban”regexp '^ba n;-1(用于匹配)mysql选择“bn”regexp '^ba n;-0(不匹配)a?

匹配一个或零个ace。

mysql选择“bn”regexp '^ba?n ';-1(用于匹配)mysql选择“ban”regexp '^ba?n ';-1(用于匹配)mysql选择“baan”regexp '^ba?n ';-0(不匹配)de|abc。

匹配de或abc。

mysql选择' pi ' REGEXP ' pi | apa-1(用于匹配)mysql选择' axe ' REGEXP ' pi | apa-0(表示不匹配)mysql选择“APA”REGEexp“pi | APA”;-1(用于匹配)MySQL选择' APA ' regexp '(pi | APA)$ ';-1(用于匹配)MySQL选择' pi ' regexp '(pi | APA)$ ';-1(用于匹配)MySQL选择' pix ' regexp '(pi | APA)$ ';-0(不匹配)(abc)*

匹配任意数量的abcs(包括空字符串)。

mysql选择“pi”regexp '^(pi)*$';-1(用于匹配)MySQL选择' pip ' regexp '(pi)* $ ';-0(表示不匹配)MySQL选择' pipi ' regexp '(pi)* $ ';-1(用于匹配){1} {2,3}。

这是一种比较全面的方法,可以实现前面几个保留字的功能。

a*

它可以写成{0,}

a

它可以写成{1,}

a?

它可以写成{0,1}。

{}中只有一个整数参数I,表示字符只能出现I次;{}中有一个整数参数I,后面跟一个“,”,表示字符可以出现I次以上;{}中只有一个整数参数I,后面跟一个“,”然后是一个整数参数J,这意味着字符只能出现I次以上J次以下(包括I次和J次)。的整数参数必须大于或等于0且小于或等于RE_DUP_MAX(默认值为255)。如果有两个参数,第二个必须大于或等于第一个。

[a-dX]

匹配“a”、“b”、“c”、“d”或“x”。

[^a-dX]

匹配除“a”、“b”、“c”、“d”和“x”之外的任何字符。

“[”、“]”必须成对使用。

mysql选择' aXbc ' REGEexp '[a-Dxyz]';-1(用于匹配)MySQL选择' axbc ' regexp '[a-dxyz]$ ';-0(表示不匹配)MySQL选择“axbc”regexp“[a-dxyz]$”;-1(用于匹配)MySQL选择' axbc ' regexp '[a-dxyz]$ ';-0(表示不匹配)MySQL选择“gheis”regexp“[a-dxyz]$”;-1(用于匹配)MySQL选择' g heisa ' regexp '[a-dxyz]$ ';-0(不匹配)

版权声明:正则表达式在MySQL中的使用是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐