STERFIELD
開発ナレッジ2014.07.30

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 のデータがヒットします。

WRITER

スターフィールド編集部

この著者の記事を見る

CONTACT

記事の内容について
相談したい方へ

実際の進め方は、状況を伺ってからご提案します。

2営業日以内にご返信します
資料ダウンロード無料相談に申し込む