1. 程式人生 > 其它 >MYSQL基本操作DQL正則表示式

MYSQL基本操作DQL正則表示式

-- ^在字串開始處進行匹配,結果為1表示為真,成功
SELECT 'abc' REGEXP '^a';
select * from product where pname regexp '^海';
-- $在字串末尾開始匹配
SELECT 'abc' REGEXP 'a$';
SELECT 'abc' REGEXP 'c$';
select * from product where pname regexp '水$';
-- .可以匹配除了換行符之外的任意單個字元
SELECT 'abc' REGEXP '.b';
SELECT 'abc' REGEXP '.c';
SELECT 'abc' REGEXP 'a.';
-- [...]匹配括號內的任意單個字元,正則表示式任意字元是否在前面出現
SELECT 'abc' REGEXP '[xyz]';
SELECT 'abc' REGEXP '[xaz]';
-- [^...] 注意^符合只有在[]內才是取反的意思,在別的地方都是表示開始處匹配
SELECT 'a' REGEXP '[^abc]';
SELECT 'x' REGEXP '[^abc]';
SELECT 'abc' REGEXP '[^a]';

-- a*匹配8個或多個a,包括空字串。可以作為佔位符使用,有沒有指定字元都可以匹配到資料
SELECT 'stab' REGEXP '.ta*b';
SELECT 'stb' REGEXP '.ta*b';
SELECT '' REGEXP 'a*';
-- a+匹配1個或者多個a,但是不包括空字元
SELECT 'stab' REGEXP '.ta+b';
SELECT 'stb' REGEXP '.ta+b';

-- a?匹配0個或者1個a
SELECT 'stb' REGEXP '.ta?b';
SELECT 'stab' REGEXP '.ta?b';
SELECT 'staab' REGEXP '.ta??b';
-- a1|a2 匹配a1或a2
SELECT 'a' REGEXP 'a|b';
SELECT 'b' REGEXP 'a|b';
SELECT 'b' REGEXP '^(a|b)';
SELECT 'a' REGEXP '^(a|b)';
SELECT 'c' REGEXP '^(a|b)';
-- a{m}匹配m個a
SELECT 'auuuuc' REGEXP 'au{4}c';
SELECT 'auuuuc' REGEXP 'au{3}c';
-- a{m,}匹配m個a或更多的a
SELECT 'auuuuc' REGEXP 'au{3,}c';
SELECT 'auuuuc' REGEXP 'au{4,}c';
SELECT 'auuuuc' REGEXP 'au{5,}c';
-- a{m,}匹配m到n個a,包含m,n
SELECT 'auuuuc' REGEXP 'au{3,5}c';
SELECT 'auuuuc' REGEXP 'au{4,5}c';
SELECT 'auuuuc' REGEXP 'au{5,10}c';
-- (abc)
-- abc作為一個序列匹配,不用括號括起來,都是用單個字元去匹配,如果要把多個字元作為一個整體去匹配就需要用到括號,所以括號適合上面的所有情況。
SELECT 'xababy' REGEXP 'x(abab)y';
SELECT 'xababy' REGEXP 'x(ab)y';
SELECT 'xababy' REGEXP 'x(ab){1,2}y';
SELECT 'xababy' REGEXP 'x(ab){3}y';