萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> sql instr()與LOCATE()字符串查找函數

sql instr()與LOCATE()字符串查找函數

由於今天一網站的子分類用到了關於sql instr()與LOCATE()字符串操作函數,下面做個筆記放下來,有需要的朋友可以參考一下。

INSTR(str,substr)
返回字符串 str 中子字符串的第一個出現位置。這和LOCATE()的雙參數形式相同,除非參數的順序被顛倒。 

 代碼如下 復制代碼 mysql> SELECT INSTR('foobarbar', 'bar');
        -> 4
mysql> SELECT INSTR('xbar', 'foobar');
        -> 0


LOCATE(substr,str) , LOCATE(substr,str,pos)
第一個語法返回字符串 str中子字符串substr的第一個出現位置。第二個語法返回字符串 str中子字符串substr的第一個出現位置, 起始位置在pos。如若substr 不在str中,則返回值為0。

 代碼如下 復制代碼 mysql> SELECT LOCATE('bar', 'foobarbar');
        -> 4
mysql> SELECT LOCATE('xbar', 'foobar');
        -> 0
mysql> SELECT LOCATE('bar', 'foobarbar',5);
        -> 7

這個函數支持多字節字元,並且只有當至少有一個參數是二進制字符串時區分大小寫。


POSITION(substr IN str)
返回子串 substr 在字符串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0:

 代碼如下 復制代碼 mysql> SELECT POSITION('bar', ‘foobarbar');
-> 4
mysql> SELECT POSITION('xbar', ‘foobar');
-> 0

效率測試

 代碼如下 復制代碼

SELECT * FROM `o_soft` WHERE LOCATE('d200',tid2)>0

MySQL 返回的查詢結果為空(即零行)。 (查詢花費 0.0050 秒)

 代碼如下 復制代碼

SELECT * FROM `o_soft` WHERE INSTR('d200',tid2)>0

MySQL 返回的查詢結果為空(即零行)。 (查詢花費 0.0009 秒)

copyright © 萬盛學電腦網 all rights reserved