数据库——正则表达式语句(1)

  • 用正则表达式进行搜索:正则表达式语言
    1、regexp:基本字符进行匹配
如:查找名字中含有“厦门鼓浪屿”字样的产品
   select id,name from product where name regexp "厦门鼓浪屿"

使用.(点):匹配任意个字符(.点的位置可以是任意,且可以代表字符串中任意一个字符)
备注:把.点使用到要匹配的字符串的开始和结尾没有意义
备注:.点可以匹配任意一个(除"\n"之外)的字符,若相匹配使用“[.\n]”

select id,name  from product where name regexp "ti..et"——可以搜到ticket
select id,name from product where name regexp "tic.et"——可以搜索到ticket
select id,name from product where name regerxp "tic.ket"——不能搜索到ticket 
select name from product where name regexp "tick."——可以搜索到ticket
无意义:
select id,name from product where name regexp ".ticket"——则“ticket”不能被搜索到,但是“aticket”“1ticket”可以被搜索到

2、|竖杠操作符:进行or匹配,即表示符合某个条件即可

如:查找名称中含有“测试”或者“厦门鼓浪屿”的产品
select id,name from product where name regexp "测试|厦门鼓浪屿"

3、[]方括号操作符:匹配几个字符之一

如:查找名称中带有“t”、“o”、"m"、"4"、,字样的产品
select id,name from product where name regexp [tom4]
即可找到产品名称中含有“tom4”四个字符中的任意一个字符产品

4、[a-z]或者[0-9]匹配范围:[]中填写有规律的字符范围,匹配出符合范围内任意字符

select name from product where name regexp "[a-f]"
找到产品表中名称中含有a,b,c..f任意字符的产品名

5、匹配特殊字符
使用\反斜杠,转移字符:如想要匹配一些有特殊意义的字符,直接匹配不能符合需求,需要使用转义字符\

如,匹配字符串中是否含有.
select ‘sdslkd.we’ regexp "\\."
运行后会返回结果为1,表示字符串‘sdslkd.we’中含有.

预定义字符集:

[:alnum:]    任意字母和数字(即[a-zA-Z0-9])
[:alpha:]    任意字符(即[a-zA-Z])
[:blank:]    空格和制表(即[\\t])
[:cntrl:]    ASCII控制字符
[:digit:]    任意数字(即[0-9])
[:lower:]    任意小写字母(即[a-z])
[:upper:]    任意大写字母(即[A-Z])

select 'meu394sjf' regexp "[[:alnum:]]"
运行结果为1,因为使用了"[:alnum:]",匹配出字符串中含有字母或数字,则返回为1

6、匹配多个实例:

重复元字符
*     0个或多个匹配
+     1个或多个匹配(即{1,})
?    0个或1个匹配(即{0,1})
{n}   指定数目的匹配
{n,}  不少于指定数目的匹配
{n,m} 匹配数目的范围(m不超过255)

select id,name from product where name regexp "[[:lower:]]{2}"
查询name中含有小写字符串的 ,且连续可以匹配2次的产品
select id,name from product where name regexp "e{2}"
表示查询name中含有ee的产品

7、定位符:匹配特定位置的字符

^:文本开始

select id,name from product where name regexp "^[:digit:]"
找出产品中产品名称是以数字开头的产品

[^…]:还可以在集合中用^定义,来否定该集合

select id,name from product where name regexp "[^ticket]"
找出产品中名称没有ticket的产品

$:文本结束

select id,name from product where name regexp "ticket$"
找出产品中产品名称是以ticket结尾的产品

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章