正則表達(dá)式是一種強(qiáng)大的文本匹配工具,MySQL也支持使用正則表達(dá)式進(jìn)行匹配查詢(xún)。
使用正則表達(dá)式查詢(xún)可使用REGEXP或RLIKE關(guān)鍵字,例如:
SELECT * FROM 表名 WHERE 列名 REGEXP '^A.*e$'; SELECT * FROM 表名 WHERE 列名 RLIKE '^A.*e$';
上述代碼查詢(xún)表名為“表名”中,列名為“列名”的行,其中列名匹配以“A”開(kāi)頭,以“e”結(jié)尾的數(shù)據(jù)。
MySQL支持的正則表達(dá)式語(yǔ)法包括:
. 匹配任意一個(gè)字符(除了換行符 \n) [...] 匹配括號(hào)內(nèi)的任意一個(gè)字符 [^...] 匹配不在括號(hào)內(nèi)的任意一個(gè)字符 ^ 匹配字符串開(kāi)頭 $ 匹配字符串結(jié)尾 * 匹配前一個(gè)字符0次或多次 + 匹配前一個(gè)字符1次或多次 ? 匹配前一個(gè)字符0次或1次 {n} 匹配前一個(gè)字符n次 {n,} 匹配前一個(gè)字符至少n次 {n,m} 匹配前一個(gè)字符n到m次 | 匹配左側(cè)或右側(cè)的字符 ()
以下是一些查詢(xún)數(shù)據(jù)時(shí)使用的正則表達(dá)式:
查詢(xún)包含字符串“mysql”的行:SELECT * FROM 表名 WHERE 列名 REGEXP 'mysql'; 查詢(xún)以“mysql”開(kāi)頭字符串的行:SELECT * FROM 表名 WHERE 列名 REGEXP '^mysql'; 查詢(xún)以“mysql”結(jié)尾字符串的行:SELECT * FROM 表名 WHERE 列名 REGEXP 'mysql$'; 查詢(xún)以任意字符開(kāi)始,以“mysql”結(jié)尾的字符串行:SELECT * FROM 表名 WHERE 列名 REGEXP '^.*mysql$'; 查詢(xún)以數(shù)字開(kāi)頭的字符串行:SELECT * FROM 表名 WHERE 列名 REGEXP '^[0-9]+.*'; 查詢(xún)不包含字符串“mysql”的行:SELECT * FROM 表名 WHERE 列名 NOT REGEXP 'mysql'; 查詢(xún)包含大小寫(xiě)字母及數(shù)字的行:SELECT * FROM 表名 WHERE 列名 REGEXP '[a-zA-Z0-9]';
通過(guò)正則表達(dá)式查詢(xún)數(shù)據(jù),可以更加靈活地匹配數(shù)據(jù),提高數(shù)據(jù)查詢(xún)的效率。