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

SQL結合 サブクエリに関して

今回はサブクエリに関してです。 もちろんSQL実践入門を読み進めています。 SQL上ではテーブル、ビュー、サブクエリというのは機能的にはそれほど変わらず主にパフォーマンスの点で違いがでてきます。 以下 …

no image

MySQLのLIMIT,OFFSETに関して&explainの見方など

自作のWEBアプリを作っていたところSELECT句が異常に遅いケースがありました。 発見までにかなり時間がかかったんですが、不可思議な現象としてはOFFSETが小さいときと大きいときで検索スピードが全 …

no image

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

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

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

no image

オプティマイザと実行計画

データベースがSQLを受け取って処理を実行する前には下記のような段階があります。 Contents1 パーサー2 オプティマイザ3 カタログマネージャー4 テーブルからデータの取得5 参考リンク パー …

no image

cake sql系+リレーション+ヘルパー

先月末に引き続いてcakeネタをもりっといきます。 といっても自分用の小ネタリンク集です。 Contents1 sql系の小ネタ1.1 findとread1.2 find(‘count&# …