STERFIELD

MySQL :: find_in_set() 関数

MySQL :: find_in_set() 関数

find_in_set()という便利な関数を見つけたのでご紹介いたします。

find_in_set()

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

idnumber
11,3,5,6,7
22,4,5,7
31
44,12
515,17

上記テーブルより「カラム numberに “1” がある」という条件でレコード抽出を行うとします。

SELECT文のWHERE句でnumber = 1 を指定してもid 3 のデータしかヒットしません。

そこでfind_in_set() を使います。

テーブルの名前をsampleとします。

こうすることにより、id 1 と 3 のデータがヒットします。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい