數據庫——正則表達式語句(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結尾的產品

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