自動目錄
Mysql 大家都會用這樣的語法:
SELECT `column` FROM `table` where `condition` like '%keyword%'
事實上,可以使用 locate 和 instr 這兩個函數來代替,例如要找出欄位 `condition`中是否有 keyword 關鍵字
SELECT `column` from `table` where locate('keyword', `condition`)>0
如果locate回傳大於0,第一個字元位址為1,則表示該關鍵字存在。
或是使用 locate 的別名 position,只會回傳true/false
SELECT `column` from `table` where position('keyword' IN `condition`)
或是使用instr,和locate的參數相反。
SELECT `column` from `table` where instr(`condition`, 'keyword' )>0
locate、position 和 instr 的差別是參數的位置不同(請仔細看上例),三者差異不大。
locate還可以使用第三個參數:
範例:在`condition`中的第10個字開始尋找'keyword' 字串
SELECT `column` from `table` where locate('keyword', `condition`,10)>0
速度上這兩個函數比用 like 稍快了一點(憑感覺)。
參考資料
[1] Mysql String Function http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
原文 2010-06-19 03:19:49