Regular Expressions in MySQL
圖片來源: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 來解決,建議只有在比對規則複雜的情況下使用,才不會影響效能。
參考資料:
圖片來源: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 來解決,建議只有在比對規則複雜的情況下使用,才不會影響效能。
參考資料: