1. 程式人生 > 其它 >sql的正則表示式REGEXP

sql的正則表示式REGEXP

select * from test

^:匹配開始位置

示例:--查詢name欄位以na開頭的資料

SELECT name FROM test WHERE name REGEXP '^na';

$:匹配結束位置

--查詢name欄位以8結尾的資料

SELECT name FROM test WHERE name REGEXP '8$';

什麼都不加,相當於like '%%'

--查詢name欄位包含 ame的資料
SELECT name FROM test WHERE name REGEXP 'ame';

.匹配任意單個字元

--查詢name欄位m前有兩個字元的資料
SELECT name FROM test WHERE name REGEXP '..m';

[]匹配括號內任意單個字元

--查詢name欄位含n或a或名的資料
SELECT name FROM test WHERE name REGEXP '[na名]';

[^]:括號內的^表示取反,括號外^表示開始位置

SELECT'a'REGEXP'[^abc]'為0,0表示不匹配,1表示匹配

SELECT 'aaa' REGEXP '[^a]';為0

SELECT 'abc' REGEXP '[^a]';為1

x*表示匹配0個或多個x字元

SELECT 'Bababn' REGEXP '^B(ab)*n';為1

SELECT 'Bababbn' REGEXP '^B(ab)*n';為0

x+匹配1個或多個x字元

x?匹配0個或1個x字元。

de|abc匹配序列de或abc

{n}或{m,n}符號提供了編寫正則表示式的更通用方式,m和n均為整數。a{n}與a的n個例項準確匹配。a{n,}匹配a的n個或更多例項。a{m,n}匹配a的m~n個例項,包含m和n

a*可被寫入為a{0,}。

a+可被寫入為a{1,}。

a?可被寫入為a{0,1}。

SELECT 'abcde' REGEXP 'a[bcd]{2}e';為0

SELECT 'abcde' REGEXP 'a[bcd]{3}e';為1

SELECT 'abcde' REGEXP 'a[bcd]{1,10}e';為1