[精讚] [會員登入]
3061

[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

你可能感興趣的文章

[Mysql/MariaDB] 查看資料庫所占空間 查看資料庫在磁碟中所占空間

[Mysql] 使用索引來加速搜尋 只要是常常用到搜索條件的欄位,就應該把它設成索引鍵,有無設定的速度差可能會好幾倍

[Docker] Mariadb-Galera出現Incorrect definition of table mysql.column_stats:'hist_type'及 'histogram' 使用docker的Mariadb-galera出現'hist_type'及 'histogram'型別錯誤的解決方法。

[Mysql] 修改欄位的自動索引值autoindex (auto_increment ) Mysql 新增、刪除、修改、查看欄位的自動索引值autoindex (auto_increment)

[Mysql] 建立叢集式資料庫2/4 -- DB2、DB3設定 使用galera建立Mysql的叢集式資料庫 ,繼續建立第2,第3台DBs

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

隨機好文

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很

[大型機台] 熱血高校躲避球 多少少年時光歲月耗在這個遊戲上,二十幾年前的那個時光,唯一想做的事就是把吃飯錢省下來拿去打一場五塊錢的電動,就算是沒錢也

此一時彼一時 我是不是易怒的人,其實我也不知道,總之我常會失控,不知道自己在幹嘛。這近生活過得浮浮的,不是很踏實,總會想太多,我甚至會

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

兩次使用InnoDB的慘痛經驗 Mysql 的Innodb引擎雖然好用,但是我得說說我兩次的慘痛經驗,這讓我考慮以後可能不會再使用innodb了