SQL中常見的模糊查詢like與正則表示式
阿新 • • 發佈:2020-09-14
1.普通的模糊查詢
SELECT 欄位 FROM 表名 WHERE 欄位 LIKE 條件
關於條件又可以分為四種匹配模式:
1)%表示零個或任意多個字元。
SELECT * FROM student WHERE stu_name LIKE ‘%詩%’
這樣就可以篩選出劉詩雯、王詩淼等類的人。
2)_: 表示任意單個字元、匹配單個任意字元。
SELECT * FROM student WHERE stu_name LIKE '_詩_'
這樣可以匹配到劉詩雯、劉劉詩雯雯、劉詩雯雯雯雯等等中間出現詩的名字。
3)[^ ] :表示不在括號所列之內的單個字元。
SELECT * FROM student WHERE stu_name LIKE '[^趙錢孫]詩雯'
這樣可以排除趙詩雯、錢詩雯、孫詩雯。
4)[ ]:表示括號內所列字元中的一個。
SELECT * FROM student WHERE stu_name LIKE '[趙錢孫]詩雯'
這樣可以匹配到趙詩雯、錢詩雯、孫詩雯。(類似正則表示式)
2.正則表示式,使用REGEXP和NOT REGEXP操作符
“.”匹配任何單個的字元:一個字元類“[...]”匹配在方括號內的任何字元。
“ * ”匹配零個或多個在它前面的東西: 例如[a-z] *表示隨機匹配任何數量a-z之間的字母
使用“^”和“$”匹配名字的開始和結尾
SELECT * FROM student WHERE stu_name REGEXP "^.....$";
名字包含五個字元的學生
“{n}”“重複n次”
SELECT * FROM student WHERE stu_name REGEXP "^.{3}$"; 匹配三個字的名字