用到的表參考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\\.] 表示文本以任意數字或.開始
$文本的結尾