もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

MySQLのFIND_IN_SET知らなかった

はじめに

こんばんは。

今回も知らなかったシリーズです。

恥をかきにいくスタイルでブログ化します。

今回はMySQLのFIND_IN_SETです。

dev.mysql.com

本題

1,2,3,4,5 のようなカンマ区切りで登録されているカラムに対して、カンマごとの値に対して検索が行なえます。

id type
1 aaa,bbb,ccc,ddd,eee
2 ccc,bbb
3 ddd
4 eee

上記のようなデータがあったときに、 ddd をもっているデータを抽出したいってなったときに役立ちます。

SELECT * FROM test_table WHERE FIND_IN_SET('ddd', types);

これで IDの 1, 3 がとれます。

便利〜

一歩進んで見る

FIND_IN_SETはカンマ区切りが絶対条件なのですが、例えば、スラッシュ区切りとかはどうすればいいのかと考えてたのですが、ありましたw

stackoverflow.com

SELECT * FROM test_table WHERE FIND_IN_SET('ddd', REPLACE(types, '/', ','))

やることは単純で 区切り文字を カンマ区切りに変換されば FIND_IN_SET が使えるようになります。

終わりに

結構知らないことが多い自分で恥ずかしい... ><

そういえば、最近ダイエットで運動頑張っているのですが、初めて3週間くらいたって、やっと成果が出始めてきました。

5月の目標が達成するかどうかは微妙ですが、がんばります!!