UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#135 JSON_CONTAINS関数(JSON 関数)とは?

記入日:2023-05-23 編集日:2023-05-23

JSON_CONTAINS関数(JSON 関数)を解説してみようと思います。

この記事を読むと(約5分)
JSON_CONTAINS関数(JSON 関数)を使用する方法をイメージできます。

JSON_CONTAINS関数(JSON 関数)とは?

JSON_CONTAINS関数は、MySQLで使用される関数で、指定したJSONデータ内に特定の値やパスが存在するかどうかをチェックします。以下にコード例を示しながら、JSON_CONTAINS関数の解説をします。

例えば、以下のようなJSONデータがあるとします:

{
  "employees": [
    {
      "name": "John",
      "age": 30,
      "department": "Sales"
    },
    {
      "name": "Jane",
      "age": 35,
      "department": "Marketing"
    },
    {
      "name": "Bob",
      "age": 40,
      "department": "HR"
    }
  ]
}

このJSONデータに対して、JSON_CONTAINS関数を使って特定の値やパスが存在するかどうかを確認することができます。

以下の例では、employees配列内のオブジェクトの"name"フィールドに"John"という値が存在するかをチェックしています:

SELECT JSON_CONTAINS(
  '{"employees": [{"name": "John", "age": 30, "department": "Sales"}, {"name": "Jane", "age": 35, "department": "Marketing"}, {"name": "Bob", "age": 40, "department": "HR"}]}',
  '"John"',
  '$.employees[*].name'
) AS result;

結果として、以下のように取得されます:

+--------+
| result |
+--------+
|      1 |
+--------+

結果が1であることから、指定したJSONデータ内に"name"が"John"という値を持つオブジェクトが存在することが分かります。

JSON_CONTAINS関数の構文は以下の通りです:

JSON_CONTAINS(json_doc, val[, path])

  1. `json_doc`: 検索対象となるJSONデータです。文字列またはJSON型のカラムを指定します。
  2. `val`: 検索する値やパスを指定します。文字列や数値、ブール値、NULL、またはJSON型の値を指定できます。
  3. `path` (オプション): 検索するパスを指定します。デフォルトではルート要素から検索が開始されます。パスはドット記法またはダブルクォーテーション付きのキーを使用して指定します。

JSON_CONTAINS関数は、指定した値やパスが存在する場合には1を、存在しない場合には0を返します。

注意点として、JSON_CONTAINS関数はMySQL 5.7以上で利用可能です。また、JSONデータ型のカラムに対しても使用することができます。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。