skillup

技術ブログ

Database

MySQLのSETとFIND_IN_SETについて

投稿日:2018年5月19日 更新日:

MySQLの方ですが、単純な文字列や、数字、日付の他に配列に近いSET型、また5.7以降ではJSONなどを入れることができます。

SET型

いわゆるチェックボックス系の値を入れるのに良さげです。

結構使うケースは多いような気もしますが、私は初めて知りました。

例えば、選択肢がりんご、かき、みかんしかなくてこれ以外の要素は取らないが、この中から複数値を取る可能性がある場合です。

実際の書き方などはリンクを参考に。

SET型に関して

MySQLのSET型を使ってみようとしてやめた

MySQLのSET型とENUM型の違い

インデックスがきかないなどのデメリットもあるようです。

SETとちかいデータとしてENUMなどもありますが、これはどうやら複数ではなく1つですね。カラムの制約が強い場合に入れるといいかもしれません。

FIND_IN_SET

今度はデータをいれたあと、検索などで使う場合ですね。

上記の例だと好きな食べ物のカラムにりんごとかきが入っている。

でりんごが好きな人を求めたいとき、にSELECT文でFIND_IN_SETを使えば〜のカラムの中にりんごが含まれているレコードというような検索方法が取れます。

知っておくと便利なMySQL関数 “FIND_IN_SET”

これまた使用機会多そうだと思ったのですが、初めて知りましたね・・・・FIND_IN_SETはリンクであるように通常の文字列がカンマ区切りで保存されているときに簡単に対象のデータを探すことができます。

検証してませんがSET型も行けるようです。

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

CakePHPでの数字カンマ区切り&PHP&MySQL曜日の出力

今回は主に時間やお金の表示など、出力に関するネタです。 Contents1 Cakeでのカンマ区切り1.1 単純なカンマ区切り 例1,0001.2 \をつけるケース 例 \1,0001.3 円をつける …

no image

SQL基礎 結合に関して

SQL実践入門を読んで勉強しておりますが、本日は結合に関して。 Contents1 クロス結合2 内部結合3 外部結合4 結合のアルゴリズムとパフォーマンス4.1 NestedLoops4.2 Has …

no image

SQLの高速化について&explain

本日はSQLの高速化について。 高速化といってもさまざまなテクがあると思うのですが、代表的な考え方に関して。 Contents1 高速化に関して1.1 index1.2 ディスクアクセスを減らす1.3 …

no image

cakePHPでのマイグレーション

開発を続けているとデータベースのカラムの構造が変更するってことはしょっちゅうですが、管理がいい加減だとメンバー間でテーブルの構造が変わっていたり、本番と開発で違ってくるなどのトラブルが続出します。 そ …

no image

MySQLのマイグレーション(workbench使用)

以前cakePHPにてマイグレーションの手法を紹介したのですが、当然PHP以外をつかっていたり、PHPでもcakeを使っていなければこの方法は通用しません。 何か、汎用的にデータベースの構造の差分がチ …