mysql查找字符串出現位置


MySQL中的LOCATE和POSITION函數使用方法

 

  1. FIND_IN_SET(str,strlist)

    假如字符串str 在由N 子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間。一個字符串列表就是一個由一些被‘,’符號分開的自鏈組成的字符串。如果第一個參數是一個常數字符串,而第二個是type SET列,則   FIND_IN_SET() 函數被優化,使用比特計算。如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個參數為NULL,則返回值為 NULL。這個函數在第一個參數包含一個逗號(‘,’)時將無法正常運行。返回值為str在strlist中的位置,從1開始計數。

  2. LOCATE(substr,str) 

    POSITION(substr IN str)


    函數返回子串substr在字符串str中第一次出現的位置。如果子串substr在str中不存在,返回值為0。

  3. str IN (strlist)

         查找str在strlist中出現的位置。如果找不到,返回false。strlist為一個用逗號連接的字符串。
函數的區別為:第一個函數FIND_IN_SET中的strlist為一個用逗號連接起來的字符串,一般為數據庫中的某個字段。當需要查找某個字段中是否有某個值的時候,使用這個函數。
第三個函數IN()剛好和函數FIND_IN_SET()相反,strlist為一個常量字符串序列,str為數據庫中某個字段。此時查找數據庫中的字段是否在某個序列中。
第二個函數為字符串查找函數,類似於php中的strpos()函數,或者javascript中的charAt()函數。此函數可以完成以上兩個函數的功能。

 

 

LOCATE(substr,str) 
POSITION(substr IN str) 
返回子串 substr 在字符串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0: 
mysql> SELECT LOCATE('bar', ‘foobarbar'); 
-> 4  (說明是從1開始計數的)
mysql> SELECT LOCATE('xbar', ‘foobar'); 
-> 0 

這個函數是多字節安全的。在 MySQL 3.23 中,這個函數是字母大小寫敏感的,當在 MySQL 4.0 中時,如有任一參數是一個二進制字符串,它才是字母大小寫敏感的。 

LOCATE(substr,str,pos) 
返回子串 substr 在字符串 str 中的第 pos 位置后第一次出現的位置。如果 substr 不在 str 中返回 0 : 
mysql> SELECT LOCATE('bar', ‘foobarbar',5); 
-> 7 

這個函數是多字節安全的。在 MySQL 3.23 中,這個函數是字母大小寫敏感的,當在 MySQL 4.0 中時,如有任一參數是一個二進制字符串,它才是字母大小寫敏感的。 

一個典型的例子是: 
slect * from tablename where LOCATE(colum1,colum1,1)>0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM