Mysql中Regexp常見用法

2021-10-19 21:17:09 字數 2257 閱讀 8874

原文:

查詢content欄位中包含「車友俱樂部」的記錄

select * from club_content where content regexp 『車友俱樂部』

此時的regexp與like的以下用法是等同的

select * from club_content where content like 『%車友俱樂部%』

查詢content欄位中以「車友」開頭的記錄

select * from club_content where content regexp 『^車友』

此時的regexp與like的以下用法是等同的

select * from club_content where content like 『車友%』

查詢content欄位中以「車友」結尾的記錄

select * from club_content where content regexp 『車友$』

此時的regexp與like的以下用法是等同的

select * from club_content where content like 『%車友』

查詢content欄位中包含「心得」、「分享」或「技術貼」

select * from club_content where content regexp 『心得|分享|技術貼』

查詢content欄位中不包含「車」字、「友」字的記錄

select * from club_content where content regexp [^車友]

這個結果跑出來一看大吃一驚,竟然把所有記錄給跑出來,這是為什麼呢?

因為一旦加了這個方括號"",它就把裡面的內容拆成單個的字元再匹配,它會逐個字元去匹配判斷是不是等於「車」,或者是不是等於「友「,返回的結果是一組0、1的邏輯值。

如果想匹配不包含特定字串,該怎麼實現呢?

模糊匹配,不包含特定字串

查詢content欄位不包含「車友」字串的記錄

select * from club_content where content not regexp 『車友』

1 ^ 匹配以該字元後面的字元開頭的字串

regexp 『^x』 表示匹配以x開頭的字元

2 $匹配以該字元前面的字元結尾的字串

regexp 『y$』 表示匹配以y結尾的字元

3 .匹配任意乙個字元

4 […]匹配在方括號中的任意乙個字元。

[1-9] 匹配1到9的數字, [abc]匹配其中任意乙個

5 *匹配零個或多個在它前面的字元

x* 匹配任何數量的x字元

模式描述^

匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,^ 也匹配 『\n』 或 『\r』 之後的位置。

$匹配輸入字串的結束位置。如果設定了regexp 物件的 multiline 屬性,$ 也匹配 『\n』 或 『\r』 之前的位置。

.匹配除 「\n」 之外的任何單個字元。要匹配包括 『\n』 在內的任何字元,請使用象 『[.\n]』 的模式。

[…]字元集合。匹配所包含的任意乙個字元。例如, 『[abc]』 可以匹配 「plain」 中的 『a』。

[^…]

負值字元集合。匹配未包含的任意字元。例如, 『[^abc]』 可以匹配 「plain」 中的』p』。

p1|p2|p3

匹配 p1 或 p2 或 p3。例如,'z

*匹配前面的子表示式零次或多次。例如,zo* 能匹配 「z」 以及 「zoo」。* 等價於。

+匹配前面的子表示式一次或多次。例如,『zo+』 能匹配 「zo」 以及 「zoo」,但不能匹配 「z」。+ 等價於 。

n 是乙個非負整數。匹配確定的 n 次。例如,『o』 不能匹配 「bob」 中的 『o』,但是能匹配 「food」 中的兩個 o。

m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。

Mysql中正規表示式Regexp常見用法

查詢content欄位中包含 車友俱樂部 的記錄 select from club content where content regexp 車友俱樂部 此時的regexp與like的以下用法是等同的 select from club content where content like 車友俱樂部...

MySQL中regexp運算子

mysql中regexp運算子 regexp運算子用來執行更複雜的字串比較運算。只能對字串進行操作 屬於regexp運算子的特殊字元 匹配字串開始部分。例 董 以董為開頭的字串。匹配字串結束部分。匹配任意單個字元包括回車和新行。匹配星號之前的0個或多個字元的任何序列。星號前可以不有 匹配加號之前的乙...

MySQL中Like與REGEXP的區別

資料庫內容 like語句 select from test1 where psd like 123456 查詢到 2,3 5like匹配當前文字 regexp語句 select from test1 where psd regexp 123456 全部查詢到 regexp更為靈活 1000 2000...