regular expression
圖片來源:Analytics Talk

當要比對的規則已經超乎 LIKE 時,適時地使用正則表達式會更為方便!

列出 A 開頭的所有資料

SELECT name FROM employees WHERE name REGEXP '^A';

列出大寫 A 開頭的所有資料(使用二進位比對)

SELECT name FROM employees WHERE name REGEXP binary '^A';

列出 A, D, F 開頭的資料

SELECT name FROM employees WHERE name REGEXP '^(A|D|F)';

列出數值資料

SELECT age FROM employees WHERE age REGEXP '^[0-9]+$';

更新 url 內的 www.google.com.tw 為 tw.yahoo.com

UPDATE website SET url =  REPLACE('url', 'www.google.com.tw', 'tw.yahoo.com');

當然,天下沒有白吃的午餐,REGEXP 比對所花費的時間大約是 LIKE 的 6 倍,所以,並不是所有情況都需要 REGEXP 來解決,建議只有在比對規則複雜的情況下使用,才不會影響效能。

參考資料: