大家好!
之前遇到一個需求
需要搜尋mysql欄位中符合正規式的情況
 
那我們都知道
如果直接使用 LIKE 其實效率是非常差的
如果讓資料庫的table鎖死
也會讓整個網站停止運作
 
所以最好不要用 LIKE
那要用什麼好呢?
 
就用 REGEXP
 
範例:搜尋欄位中有apple 或 flower 的資料
這邊的正規表示法不需要 "/" 斜線加在前後,也代表他不能設定額外屬性
 
//我的SQL語法都會使用大寫方便區別
SELECT * FROM `表單名稱` WHERE `欄位` REGEXP 'apple|flower';

//也可以使用LOWER轉小寫函數來忽略大小寫
SELECT * FROM `表單名稱` WHERE LOWER(`欄位`) REGEXP '[abc]{3}';

//也可以使用在SELECT 來判斷值,符合為1,不符合為0
SELECT `欄位` REGEXP "apple|flower" AS "result";


 
這樣就可以搜尋了
希望對大家有幫助
感恩!