MySQL:where子句 使用正則表達式


用到的表參考https://www.cnblogs.com/july23333/p/11763375.html

where子句使用正則表達式用關鍵字REGEXP

1、匹配基本字符

eg1: select prod_name from products where prod_name regexp '1000';

看上去很像like語句的作用,但是like '1000'可不會返回上面的結果,like '%1000'才可以。

like匹配的是整個列,regexp匹配列值內的文本。

eg2: select prod_name from products where prod_name regexp '.000';

正則表達式中的'.'可以匹配任一字符。

 

2、OR匹配 '|'實現

eg: select prod_name from products where prod_name regexp '1000|2000';

 

 

 3、匹配幾個字符之一

eg: select prod_name from products where prod_name regexp '[123] ton';

[123]等效於[1|2|3],需要把OR的字符括起來,否則‘1|2|3 ton’會被MySQL理解為1或2或3 ton。

[^123]前面加^表示取反。

 

4、匹配范圍

[1-5] [a-z]等

 

5、匹配特殊字符

eg: select prod_name from products where prod_name regexp '.'; 將搜索出所有行,而我們只想要含有‘.’的怎么做?

轉義:select prod_name from products where prod_name regexp '\\.';

 

正則表達式具有特殊意義的字符都這樣轉義。

為了匹配 '\' 要使用 ‘\\’;一般正則表達式實現使用單個反斜杠 \ 轉義特殊字符,就能這些字符本身,但是MySQL需要兩個 \\,正則表達式解釋一個,MySQL用一個。

 

 6、匹配字符類

預定義的字符集如下:

eg: select prod_name from products where prod_name regexp '[:alnum:]';

 

 7、匹配多個實例

常用正則表達式重復元字符:

注意:這些重復元字符都是規定其前面出現的字符或表達式的,如[0-9]{5}匹配連在一起任意5個數字

 

 8、定位符

^文本的開始(只有在集合[]中才表示否定集合) ^[0-9\\.] 表示文本以任意數字或.開始

$文本的結尾


免責聲明!

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



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