Blog

MySQL :: find_in_set() 関数

2014.07.29Cat:MySQL プログラマー

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

find_in_set()

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

id number
1 1,3,5,6,7
2 2,4,5,7
3 1
4 4,12
5 15,17

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

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

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

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

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

Author Profile

  • Launch Cart次世代ECサイト構築システム 初期月額無料
  • LaunchMovie ECに特化した動画制作サービス

Archive

ページTOPへ