MySQL的FIND_IN_SET函數使用方法總結

FIND_IN_SET該方法會在什麼狀況下用到呢?php

好比咱們發表一篇文章,該文章有許多標籤屬性,如發表一篇關於laravel的MySQL查詢方法的博客,則該博客的相關標籤就會有 PHP,MySQL,laravel等,tags_arr = array(1=>'php',2=>'mysql',3=> 'laravel');該博客的標籤字段tags保存標籤ID,表中tags以 1,2,3的格式存儲,那麼咱們如何用sql查找全部tags中標籤ID爲2的文章呢,mysql

這就要咱們的find_in_set出馬的時候到了. 

先看mysql手冊中find_in_set函數的語法: 
 laravel

FIND_IN_SET(str,strlist) 


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

查詢結果:函數

SELECT * FROM `article` where FIND_IN_SET('2', tags);優化

若是用SELECT * FROM `article` where tags IN (2);這樣的方法獲取,則不會獲取到數據。code

 因此,這個MySQL方法FIND_IN_SET(str,strlist) 能夠大大增長咱們處理相似的相關問題。字符串

相關文章
相關標籤/搜索