当前位置:

REGEXP 运算符--正则表达式- SQL

访客 2024-04-25 313 0

2-8REGEXP运算符–正则表达式-SQL

第一个例子

当想查询表customers中的last_name中有field的数据,代码如下

SELECT*FROMcustomersWHERElast_nameLIKE'%field%'

MySql中还有另外一个运算符,REGEXP是正则表达式(regularexpression)的缩写.正则表达式在搜索字符串时非常强大.它允许我们搜索更复杂的模式.

SELECT*FROMcustomersWHERElast_nameREGEXP'field'

我们可以用‘^’表示字符串的开头,

SELECT*FROMcustomersWHERElast_nameREGEXP'^field'--表示我们的姓氏必须以field开头

我们还用美元符号$代表字符串末尾,

SELECT*FROMcustomersWHERElast_nameREGEXP'field$'--表示我们的姓氏必须以field结尾

这里可以搜寻多个单词,比如,假设我们想查询一些顾客,他们姓氏包含field或者mac,我们使用|并输入另外一个模式.可以使用多个|表示多个搜寻模式.

SELECT*FROMcustomersWHERElast_nameREGEXP'field|mac'--表示姓氏中包含field或者mac

当有下面情况,表示

SELECT*FROMcustomersWHERElast_nameREGEXP'^field|mac|rose'--表示查询以field开头的姓氏或者姓氏中含有mac或者姓氏中含有roseSELECT*FROMcustomersWHERElast_nameREGEXP'field$|mac|rose'--表示查询以field结尾的姓氏或者姓氏中含有mac或者姓氏中含有rose

第二个例子

假设你想搜寻姓氏里有e的顾客,如果你想要确保在e前要有g或者i两者之一,这时需要用到方括号[],在括号里加上多个字母,比如gim,对应了任何姓氏里有ge或者ie或者me的顾客.

SELECT*FROMcustomersWHERElast_nameREGEXP'[gim]e'--方括号[]可以放到e前面,也可以放到e后面

可以用‘[a-h]e’表示‘[abcdefg]e’.
总结:
^beginning
$end
|logicalor
[abcd]使用[]匹配任意在括号里列举的单字符.
a-f表示[abcdefg],-代表一个范围.

例题

问题:

--Getthecustomerswhose--firstnamesareELKAorAMBUR--lastnamesendwithEYorON--lastnamesstartwithMYorcontainsSE--lastnamescontainBfollowedbyRorU

代码实现:

SELECT*FROMcustomers--WHEREfirst_nameREGEXP'ELKA|AMBUR'--WHERElast_nameREGEXP'EY$|ON$'--WHERElast_nameREGEXP'^MY|SE'WHERElast_nameREGEXP'B[RU]'

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~