[精讚] [會員登入]
3149

[Mysql/MariaDB] 使用 LOCATE, POSITION, INSTR來取代 like

[Mysql/MariaDB中使用LOCATE, POSITION, INSTR來取代 like的方法

分享此文連結 //n.sfs.tw/10603

分享連結 [Mysql/MariaDB] 使用 LOCATE, POSITION, INSTR來取代 like@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-24 17:44:15 最後編修
2017-01-13 01:49:48 By 張○○
 

自動目錄

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

END

你可能感興趣的文章

[mysqldump] Mysqldump時出現記憶體錯誤Out of memory 當進行 mysqldump 時出現 Out of memory (Needed xxxxx bytes) 的錯誤,該如何處理?

[Mysql/MariaDB] 修改資料庫、表格或欄位名稱 Mysql/MariaDB修改資料庫、表格或欄位名稱

[phpmyadmin] 登錄超時 (1440 秒未操作),請重新登錄 phpmyadmin登錄超時 (1440 秒未操作),請重新登錄的問題,該如何解決?

[Mysql] 修改資料庫預設校對或編碼 修改資料庫預設校對或編碼的方法

[Mysql] Mysqldump 的預設編碼 --default-character-set 有時Mysqldump 也得要指定編碼才不會造成匯出的亂碼

group by的語法在mysql升級後後就不正常了,怎麼回事? ONLY_FULL_GROUP_BY這個變數是怎樣,讓我原本可以用的語法失效了?

隨機好文

如何在linux下執行java 原生的java應用程式可以使用簡單的方法在console下面寫出來,適合作簡單的應用

[PHP] 檢查檔案是否是圖檔 使用getimagesize函數檢查檔案是否是圖檔

詭異的創業思維 創業的思維中,有多少銀彈,有多少技術,有多少人脈,有多少時間等等,每個都要考慮進去,以熱忱建立的關係脆弱的像蘇打餅乾一樣..

「許功蓋」的字以及源由 有玩過電腦一段時間的人,都聽過這個人(有一天我才發現7年級的竟然都不認識這個

[AS3] 物件加上超連結的方法 物件加上超連結,可讓使用者點擊的方法