tabimoba.net

とあるエンジニアの雑記帳

MySQLでカンマ区切りのデータからレコードを抽出するためのSQL文

MySQLでは、FIND_IN_SET関数を使用すると、カンマなどのデリミタで区切られたデータ処理(レコード抽出)を非常に簡単に行うことができます。

例えば、「EXAMPLE」というテーブルに「IDs」というフィールドがあり、各レコードのIDsフィールドのデータは「11,13,21」のようなカンマ区切りでセットされているとします。この中から「13」が含まれるレコードを抽出する場合は、次のようなSQL文を実行します。

SELECT ID FROM EXAMPLE WHERE FIND_IN_SET('13', IDs);

デリミタがカンマ以外の場合(例えば「::」とかの場合)は、次のようなSQL文を実行します。

SELECT ID FROM EXAMPLE WHERE FIND_IN_SET('13', REPLACE(IDs,'::',','));