由于今天一網站的子分類用到了關于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 秒).
|
新聞熱點
疑難解答