正则表达式在MySQL中的使用
我以前用喜欢找数据。后来发现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或者邮箱删除。