MySQLでJSONデータ型をクエリする方法をわかりやすく解説
はじめに
MySQLにはJSONデータ型が用意されており、カラムにJSON形式のデータをそのまま保存して柔軟に扱うことができます。本記事では、実際にテーブルを作成し、JSONデータの挿入・表示・検索を行う具体的な手順をサンプルコード付きで解説します。
1. JSON型カラムを持つテーブルを作成する
まず、JSONデータ型のカラムを持つテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> StudentName json
-> );
Query OK, 0 rows affected (0.74 sec)
2. レコードを挿入する
続いて、INSERTコマンドを使ってテーブルにJSON形式のデータを挿入します。
mysql> insert into DemoTable values('["John", "Chris", "Robert","David","Sam"]');
Query OK, 1 row affected (0.33 sec)3. レコードを表示する
SELECT文を実行して、テーブル内のすべてのレコードを確認してみましょう。
mysql> select *from DemoTable;
出力結果
上記のクエリを実行すると、次のような結果が得られます。
+---------------------------------------------+
| StudentName |
+---------------------------------------------+
| ["John", "Chris", "Robert", "David", "Sam"] |
+---------------------------------------------+
1 row in set (0.00 sec)
4. JSONデータ型をクエリ(検索)する
JSON配列の中に特定の値が含まれているかどうかを調べるには、JSON_CONTAINS()関数を使用します。以下の例では、StudentNameカラムのJSON配列に「Chris」という名前が含まれているレコードを検索しています。
mysql> SELECT *from DemoTable WHERE JSON_CONTAINS(StudentName, '["Chris"]');
出力結果
条件に一致するレコードのみが出力されます。
+---------------------------------------------+
| StudentName |
+---------------------------------------------+
| ["John", "Chris", "Robert", "David", "Sam"] |
+---------------------------------------------+
1 row in set (0.04 sec)
まとめ
MySQLのJSONデータ型を活用すれば、可変的な構造のデータでも柔軟に保存・管理できます。特にJSON_CONTAINS()関数を使えば、JSON配列内に目的の値が存在するかどうかを簡単に判定でき、WHERE句と組み合わせた条件検索にも対応可能です。なお、第2引数にはJSON形式の値を渡す必要があるため、文字列を指定する場合は二重引用符の扱いに注意してください。JSON関数をマスターすれば、MySQLでのデータ操作の幅が大きく広がります。
-
MySQLで全行の値に数値や日付を加算する方法(UPDATE文の使い方)
MySQLでは、UPDATE文を使うことで、テーブル内のすべての行に対して一括で値を加算できます。対象となるカラムの型が整数型か日付型かによって、書き方が少し異なります。 整数型カラムに値を加算する構文 カラムが整数型の場合、以下のような構文を使用します。 UPDATE テーブル名 SET 整数カラム名 = 整数カラム名 + 加算する値; UPDATE テーブル名 SET 整数カラム名 = 加算する値 WHERE 整数カラム名 IS NULL; 1行目は既存の値に加算する基本形、2行目はNULLが含まれている場合にNULLを任意の値へ置き換えるためのクエリです。 日付型カラムに値を加算する
-
MySQLのSOUNDEX()関数を使って発音が似た文字列を検索する方法
SOUNDEX()関数とはMySQLのSOUNDEX()関数は、文字列からサウンドex(Soundex)コードと呼ばれる音声表現の文字列を返します。Soundexは、英語の発音の類似性に基づいて文字列をインデックス化するアルゴリズムで、発音がほぼ同じ2つの文字列は、同一のSoundexコードを持つという特徴があります。この特性を活かすことで、スペルは異なるが発音が似ている名前や単語を効率的に検索できます。SOUNDEX()を使用したクエリの基本構文MySQLでSOUNDEX()を使って検索するには、以下のような構文を使用します。SELECT * FROM テーブル名 WHERE SOUNDEX