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

PostgreSQLについて

本日はポスグレ(PostgreSQL)について。 自分はほとんどMySQLだったので、主にMySQLとの比較について書いていきます。 Contents1 アーキテクチャの違い1.1 MySQL1.2 …

no image

データベースのインデックスについて

今回はデータベースのインデックスに関して。 検索条件を早くする場合、何よりも速度が速くなるのはインデックスを張ることでしょう。 インデックスを張ることは単語を索引順に並べることですので、劇的に速度が向 …

no image

JPAでのリレーション(アノテーション使用)

JPAでリレーションを管理するとき、最初はアノテーションでやろうとしたんですが、結局やり方がわからずコンストラクタ式をかいて対処してました。 JPAでのリレーションに関して 外部キー制約があるやり方は …

no image

HAVING句がらみの計算式

「達人に学ぶSQL徹底指南書」読んでますが、かなり難しいものがでてきましたね。 テーブルは前回のものと同じ以下のものを使います。 name | income ————+——– サンプソン | 4000 …

no image

MySQLのユーザー変更+information_schema.columns

MySQLで行うユーザーの作成について

これですが、一つのデータベースに対して行うとhost内のユーザーすべてが切り替わってしまいます …

アーカイブ