mysql中使用正則表達式查詢


正則表達式功能確實很強大,那天專門抽空學學,這里就暫時在mysql查詢中用用。

正則表達式強大而靈活,可以應用於非常復雜的查詢。

選項 說明(自動加匹配二字) 例子 匹配值示例
^ 文本開始字符 '^b'匹配以字母b開頭的字符串 book, big, banana, bike
$ 文本結束字符 'st$'匹配以st結尾的字符串 test, resist, persist
. 任何單個字符 'b.t'匹配任何b和t之間有一個字符 bit, bat, but, bite
* 0個或多個在它前面的字符 'f*n'匹配字符n前面有任意n個字符f fn, fan, faan, abcn
+ 前面的字符一次或多次 'ba+'匹配以b開頭后面緊跟至少一個a ba, bay, bare, battle
<字符串> 包含指定字符串的文本 'fa' fan, afa, faad
[字符集合] 字符集合中的任一個字符 '[xz]'匹配x或者z dizzy, zebra, x-ray, extra
[^] 不在括號中的任何字符 '[^abc]'匹配任何不包含a、b或c的字符串 desk, fox, f8ke
字符串{n} 前面的字符串至少n次 b{2}匹配2個或更多的b bbb, bbbb, bbbbbb
字符串{n,m} 前面的字符串至少n次,至多m次 b{2,4}匹配最少2個,最多4個b bb, bbb, bbbb

 

where 字段名 REGEXP 模式;

 

---恢復內容開始---

基本形式

屬性名 regexp ‘匹配方式'

正則表達式的模式字符

^ 匹配字符開始的部分

eg1: 從info表name字段中查詢以L開頭的記錄

select * from info where name regexp '^L';

eg2: 從info表name字段中查詢以aaa開頭的記錄

select * from info where name regexp '^aaa';

$ 匹配字符結束的部分

eg1: 從info表name字段中查詢以c結尾的記錄

select * from info where name regexp 'c$';

eg2: 從info表name字段中查詢以aaa結尾的記錄

select * from info where name regexp 'aaa$';

. 匹配字符串中的任意一個字符,包括回車和換行

eg1: 從info表name字段中查詢以L開頭y結尾中間有兩個任意字符的記錄

select * from info where name regexp '^L..y$';

[字符集合]匹配字符集合中的任意字符

eg1: 從info表name字段中查詢包含c、e、o三個字母中任意一個的記錄

select * from info where name regexp '[ceo]';

eg2: 從info表name字段中查詢包含數字的記錄

select * from info where name regexp '[0-9]';

eg3: 從info表name字段中查詢包含數字或a、b、c三個字母中任意一個的記錄

select * from info where name regexp '[0-9a-c]';

[^字符集合]匹配除了字符集合外的任意字符

eg1: 從info表name字段中查詢包含a-w字母和數字以外字符的記錄

select * from info where name regexp '[^a-w0-9]';

s1|s2|s3 匹配s1s2s3中的任意一個

eg1: 從info表name字段中查詢包含'ic'的記錄

select * from info where name regexp 'ic';

eg2: 從info表name字段中查詢包含ic、uc、ab三個字符串中任意一個的記錄

select * from info where name regexp 'ic|uc|ab';

* 代表多個該字符前的字符,包括0個或1個

eg1: 從info表name字段中查詢c之前出現過a的記錄

select * from info where name regexp 'a*c';

+ 代表多個該字符前的字符,包括1個

eg1: 從info表name字段中查詢c之前出現過a的記錄

select * from info where name regexp 'a+c';(注意比較結果!)

字符串{N} 字符串出現N次

eg1: 從info表name字段中查詢出現過a3次的記錄

select * from info where name regexp 'a{3}';

字符串{M,N}字符串最少出現M次,最多出現N次

eg1: 從info表name字段中查詢ab出現最少1次最多3次的記錄

select * from info where name regexp 'ab{1,3}';

MYSQL中自帶通配符(LIKE關鍵詞)

%可以表示任意長度的字符(包括0)

-可以表示單個字符 

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM