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

DBUtils活用 その2

以前DBUtilsの活用を書きましたが、他の使い方がわかったのでメモ 以前はSelectでList<エンティティ>を取得したのですが、List<Map>でも取得できます。 ソー …

no image

CASE+HAVING句

今回はCASEとHAVINGを組み合わせて、そこそこの難問を解いていきます。 まず下記のようなテーブル(testresults)があるとします。 student | class | sex | sco …

no image

sourceコマンドに関して(Linuxサーバー&MySQL)

Linux上ではコマンドをテキストファイルに記述して、

と入力すると命令を実行してくれます。 シェルスクリプトよりもお手軽に実行できる …

no image

HAVING句について NULL時の動き

HAVING句のNULLがあった時の挙動にたいしてメモリます。 COUNTの処理 対象上の列数を数えるのにCOUNTを使うと思いますが、COUNT(*)とCOUNT(列名)では動きが若干違っており、前 …

no image

PostgreSQLについて

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