MariaDB で JSON パスを使用して JSON 文書を検索、比較、変換する
MariaDB における JSON パス: プログラミング解説
JSON パスは、JSON 文書内の値を階層的に表現するクエリ言語です。ドット記号 (.)、角括弧 ([])、ドル記号 ($) などの記号を使用して、オブジェクトのプロパティ、配列の要素、およびルートレベルの値にアクセスします。
MariaDB での JSON パスの使用方法
MariaDB は、JSON データを格納するための JSON
データ型と、JSON パスを操作するためのさまざまな組み込み関数を提供します。以下に、一般的な例をいくつか示します。
JSON 値の取得
SELECT JSON_VALUE(data, '$.name');
このクエリは、data
列に格納された JSON データから name
プロパティの値を取得します。
JSON 配列の要素へのアクセス
SELECT JSON_VALUE(data, '$.items[2]');
JSON オブジェクトのプロパティへのアクセス
SELECT JSON_VALUE(data, '$.address.city');
JSON データの更新
UPDATE my_table
SET data = JSON_SET(data, '$.price', 19.99)
WHERE id = 123;
このクエリは、my_table
テーブルの id
が 123 である行の data
列に格納された JSON データの price
プロパティを 19.99 に更新します。
INSERT INTO my_table (data)
VALUES ('{"name": "John Doe", "age": 30}');
このクエリは、my_table
テーブルに新しい行を挿入し、data
列に JSON データ { "name": "John Doe", "age": 30 }
を格納します。
これらのリソースは、MariaDB で JSON データを操作するための詳細情報と例を提供します。
書籍データの操作
この例では、書籍に関する JSON データを格納する books
テーブルを作成します。その後、JSON パスを使用して、書籍のタイトル、著者、および価格を取得します。
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
data JSON
);
INSERT INTO books (data)
VALUES ('{"title": "The Lord of the Rings", "author": "J.R.R. Tolkien", "price": 24.99}');
INSERT INTO books (data)
VALUES ('{"title": "Pride and Prejudice", "author": "Jane Austen", "price": 19.99}');
SELECT id, JSON_VALUE(data, '$.title') AS title, JSON_VALUE(data, '$.author') AS author, JSON_VALUE(data, '$.price') AS price
FROM books;
このクエリは次の結果を返します:
id | title | author | price
---+------------+-------------+-------
1 | The Lord of the Rings | J.R.R. Tolkien | 24.99
2 | Pride and Prejudice | Jane Austen | 19.99
顧客データの更新
CREATE TABLE customers (
id INT PRIMARY KEY AUTO_INCREMENT,
data JSON
);
INSERT INTO customers (data)
VALUES ('{"name": "John Doe", "address": {"city": "San Francisco", "state": "CA"}}');
UPDATE customers
SET data = JSON_SET(data, '$.address.city', 'New York')
WHERE id = 1;
注文データの挿入
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
data JSON
);
INSERT INTO orders (data)
VALUES ('{"customer_id": 123, "items": [{"product_id": 1, "quantity": 2}, {"product_id": 3, "quantity": 1}]}');
このクエリは、orders
テーブルに新しい行を挿入し、data
列に JSON データ { "customer_id": 123, "items": [{"product_id": 1, "quantity": 2}, {"product_id": 3, "quantity": 1}] }
を格納します。
これらの例は、MariaDB で JSON パスを使用して JSON データを操作する方法を示すほんの一例です。JSON パスは、複雑な JSON 構造を操作するための強力なツールであり、MariaDB で JSON データを操作する際に多くの可能性を提供します。
MariaDB で JSON パスを使用するその他の方法
JSON 検索
JSON_SEARCH
関数を使用して、JSON 文書内で特定の文字列を検索できます。この関数は、一致する各文字列の JSON パスを返す配列を返します。
SELECT JSON_SEARCH(data, 'apple');
このクエリは、data
列に格納された JSON データ内に "apple" という文字列が含まれるすべての JSON パスの配列を返します。
JSON_CONTAINS
および JSON_CONTAINS_PATH
関数を使用して、JSON 文書が特定の値またはパスを含むかどうかを確認できます。
SELECT JSON_CONTAINS(data, 'apple');
SELECT JSON_CONTAINS_PATH(data, '$.price > 15');
JSON_QUOTE
および JSON_LENGTH
関数を使用して、JSON データの型変換と長さを取得できます。
SELECT JSON_QUOTE(data);
SELECT JSON_LENGTH(data);
JSON_ARRAY_APPEND
および JSON_ARRAY_INSERT
関数を使用して、JSON 配列に新しい値を追加できます。
SELECT JSON_ARRAY_APPEND(data, '$.items', '{"product_id": 4, "quantity": 1}');
このクエリは、data
列に格納された JSON データの items
配列に新しいオブジェクト { "product_id": 4, "quantity": 1 }
を追加して返します。
MariaDB は、JSON データを格納および操作するための包括的な機能を提供します。JSON パスは、これらの機能を活用して、JSON 文書内の値を効率的に操作するための強力なツールです。
このガイドで説明した概念と例を理解することで、MariaDB で JSON データを操作するためのスキルを向上させることができます。
mysql mariadb