̃Gg[͂ĂȃubN}[Nɒlj

MySQL :: find_in_set() 関数



FIND_IN_SET(str,strlist)

N 個の部分文字列で構成されるリスト strlist に、文字列 str が含まれている場合は、1 から N までのいずれかの値を返す。
文字列のリストは、それぞれの間を カンマ‘,’文字で区切られた各部分文字列で構成される文字列である。
最初の引数が定数文字列で、2 番目の引数が SET 型のカラムの場合、FIND_IN_SET() 関数はビット演算を使用するよう最適化される。
str が strlist に含まれていない場合や、strlist が空の文字列の場合は、0 を返す。どちらの引数も NULL の場合は、NULL を返す。
最初の引数に カンマ‘,’ が含まれていると、この関数は正しく動作しない。


いずれかが格納されている行の検索

カラム col に `1' か `3' か `4' のいずれかが格納されている行を検索したい

SELECT * from table where FIND_IN_SET(col, '1,3,4') ;

カラム col には `1,3,4,7,9' のように カンマ区切りの数値 が格納されているとする
カラム col には 1~10 の数値 が1つだけ格納されているとする


両方が格納されている行の検索

カラムに col に `3' と `4' の両方が格納されている行を検索したい

SELECT * from table where FIND_IN_SET(3, col) and FIND_IN_SET(4, col) ;

カラム col には `1,3,4,7,9' のように カンマ区切りの数値 が格納されているとする




database/mysql/etc/find_in_set.txt