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

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

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

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

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

JSON_REMOVE関数(JSON 関数)とは?

JSON_REMOVE関数は、MySQLやMariaDBなどのデータベースシステムで使用されるJSONデータ型の操作を行うための関数です。JSON_REMOVE関数は、指定したJSONドキュメントから指定されたパスに該当する要素を削除します。

以下に、JSON_REMOVE関数の使用例を示します。

まず、以下のようなテーブルがあるとします。

CREATE TABLE products (
  id INT,
  data JSON
);

INSERT INTO products VALUES (1, '{"name": "Product 1", "price": 10, "category": "Electronics"}');
INSERT INTO products VALUES (2, '{"name": "Product 2", "price": 20, "category": "Clothing"}');

このテーブルには、idとdataという2つのカラムがあります。dataカラムはJSONデータ型を持っており、各商品の情報を格納しています。

例えば、JSON_REMOVE関数を使用して、idが1の商品の"price"要素を削除する場合、次のようなクエリを実行します。

UPDATE products
SET data = JSON_REMOVE(data, '$.price')
WHERE id = 1;

このクエリは、"products"テーブルの"data"カラムのJSONデータから、指定したパス("$.price")に該当する要素を削除します。

実行後、"products"テーブルを確認すると、idが1の商品の"data"カラムのJSONデータから"price"要素が削除されていることがわかります。

SELECT * FROM products;

/*
id | data
---+------------------------------------
1  | {"name": "Product 1", "category": "Electronics"}
2  | {"name": "Product 2", "price": 20, "category": "Clothing"}
*/

このように、JSON_REMOVE関数を使用することで、JSONデータ型の要素を指定したパスに基づいて削除することができます。

JSON_REMOVE関数は、指定したパスに該当する要素を削除するだけでなく、必要に応じて親要素も削除します。つまり、削除された要素が親要素の唯一の子要素である場合、親要素も削除されます。

以下の例を見てみましょう。

CREATE TABLE employees (
  id INT,
  info JSON
);

INSERT INTO employees VALUES (1, '{"name": "John", "department": "Sales"}');
INSERT INTO employees VALUES (2, '{"name": "Alice", "department": "HR"}');
INSERT INTO employees VALUES (3, '{"name": "Bob", "department": "IT"}');

このテーブルには、idとinfoという2つのカラムがあります。infoカラムはJSONデータ型を持ち、各従業員の情報を格納しています。

例えば、"department"が"HR"の従業員の情報を削除する場合、次のようなクエリを実行します。

UPDATE employees
SET info = JSON_REMOVE(info, '$[?(@.department=="HR")]')
WHERE id = 2;

このクエリは、"employees"テーブルの"info"カラムのJSONデータから、"department"が"HR"の要素を削除します。

実行後、"employees"テーブルを確認すると、idが2の従業員の情報が完全に削除されていることがわかります。

SELECT * FROM employees;

/*
id | info
---+------------------------------------
1  | {"name": "John", "department": "Sales"}
3  | {"name": "Bob", "department": "IT"}
*/

このように、JSON_REMOVE関数は、指定したパスに該当する要素を削除するだけでなく、必要に応じて親要素も削除することがあります。これは、削除された要素が親要素の唯一の子要素である場合に発生します。

SQLの使いどころ

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

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

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

KK

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