ホームページ  >  記事  >  データベース  >  MySQL 5.7 の新機能 Json 列と生成された列 (中)

MySQL 5.7 の新機能 Json 列と生成された列 (中)

黄舟
黄舟オリジナル
2017-02-07 13:11:401257ブラウズ

最初のタイトル

1. JSON_ARRAY_APPEND 配列クラスの追加

この使用法は主に JSON フィールド内の値配列型データを処理するためのもので、主に標準の配列型ではない値を追加するために使用されます。この関数はそれを自動的に配列に変換します。前の値が配列の最初の要素として使用され、追加されます。

mysql> SET @j = '["a", ["b", "c"], "d"]';


フィールドの 2 番目の値の配列に要素 1 を追加します。フィールドの値 要素 2 を配列に追加します。配列形式の単一の値でない場合は、配列に変更して追加します。

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1]', 1) |
+----------------------------------+
| ["a", ["b", "c", 1], "d"]         |
+----------------------------------+

2 番目の最初の配列に要素 3 を追加します。フィールド内の値 (配列形式の単一の値ではない場合) 値は配列に変更されて追加されます:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[0]', 2);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[0]', 2) |
+----------------------------------+
| [["a", 2], ["b", "c"], "d"]      |
+----------------------------------+

要素 "x" をキー "b" で値の配列に追加しますフィールド:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1][0]', 3);
+-------------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1][0]', 3) |
+-------------------------------------+
| ["a", [["b", 3], "c"], "d"]         |
+-------------------------------------+



フィールドのキー「c」を持つ値 要素「y」を配列に追加します:

mysql> SET @j = '{"a": 1, "b": [2, 3], "c": 4}';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$.b', 'x');
+------------------------------------+
| JSON_ARRAY_APPEND(@j, '$.b', 'x')  |
+------------------------------------+
| {"a": 1, "b": [2, 3, "x"], "c": 4} |
+------------------------------------+

JSON フィールドが標準の JSON タイプの場合、この関数を使用すると、配列形式に変更して値を追加します:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$.c', 'y');
+--------------------------------------+
| JSON_ARRAY_APPEND(@j, '$.c', 'y')    |
+--------------------------------------+
| {"a": 1, "b": [2, 3], "c": [4, "y"]} |
+--------------------------------------+

JSON フィールドが標準の JSON 型の場合、バッチ追加:

mysql> SET @j = '{"a": 1}';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z');
+---------------------------------+
| JSON_ARRAY_APPEND(@j, '$', 'z') |
+---------------------------------+
| [{"a": 1}, "z"]                    |
+---------------------------------+

2. JSON_ARRAY_INSERT 配列クラスの挿入

この使用法は主に値の配列を処理するためです。 JSON フィールドにデータを入力します (主に標準の配列型ではありません)。この関数は、前の値を配列の最初の要素として使用して追加します。

mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z','$', 'w');
+---------------------------------+
| JSON_ARRAY_APPEND(@j, '$', 'z') |
+---------------------------------+
| [{"a": 1}, "z", "w"]              |
+---------------------------------+

Insert配列の最初の値の後に文字「x」を挿入します。 要素:

mysql> SET @j = '["a", {"b": [1, 2]}, [3, 4]]';

配列の最初の値の前に文字「x」を挿入します。 要素:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1]', 'x');
+------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1]', 'x') |
+------------------------------------+
| ["a", "x", {"b": [1, 2]}, [3, 4]]  |


100 番目の要素の後に文字「x」を挿入します。配列内の値が長すぎる場合は、最後の値の後に挿入します。

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[0]', 'x');
+------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1]', 'x') |
+------------------------------------+
| ["x","a", {"b": [1, 2]}, [3, 4]]  |
+------------------------------------+

配列の最初の値には、キー 'b' の値を入力します。 文字要素 'x' を、配列の最初の値の前に入力します。配列:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[100]', 'x');
+--------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[100]', 'x') |
+--------------------------------------+
| ["a", {"b": [1, 2]}, [3, 4], "x"]    |
+--------------------------------------+

配列の 2 番目の値の後ろと、配列の最初の値の後に文字要素 'y' を入力します:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1].b[0]', 'x');
+-----------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1].b[0]', 'x') |
+-----------------------------------------+
| ["a", {"b": ["x", 1, 2]}, [3, 4]]       |
+-----------------------------------------+

配列要素のバッチ挿入:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[2][1]', 'y');
+---------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[2][1]', 'y') |
+---------------------------------------+
| ["a", {"b": [1, 2]}, [3, "y", 4]]     |
+---------------------------------------+

JSON_INSERT 標準 JSON 値の挿入

キーがすでに存在する場合、古い値は上書きされません。 存在しない挿入:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[0]', 'x', '$[2][1]', 'y');
+----------------------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[0]', 'x', '$[2][1]', 'y') |
+----------------------------------------------------+
| ["x", "a", {"b": [1, 2]}, [3, 4]]                      |
+----------------------------------------------------+

4. JSON_MERGE マージ操作

JSON_MERGE は主にマージに使用されます: 2 つの場合、それらはマージされます。 2 つの JSON が同じキーを持つ場合は 1 つの配列にマージされ、2 つの単一値の場合は 1 つの配列にマージされます。 ; それが配列であり、一方が JSON である場合は、それを配列にマージします:

JSON_REMOVE 削除操作 これは、フィールド内の特定の値を配列または JSON 形式で削除します。可能:

mysql> SET @j = '{ "a": 1, "b": [2, 3]}';
mysql> SELECT JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]');
+----------------------------------------------------+
| JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]') |
+----------------------------------------------------+
| {"a": 1, "b": [2, 3], "c": "[true, false]"}          |
+----------------------------------------------------+

6. JSON_REPLACE 操作

JSON_REPLACE 置換操作。存在する場合は置き換え、存在しない場合は無視します。

mysql> SELECT JSON_MERGE('[1, 2]', '[true, false]');
+---------------------------------------+
| JSON_MERGE('[1, 2]', '[true, false]') |
+---------------------------------------+
| [1, 2, true, false]                       |
+---------------------------------------+
mysql> SELECT JSON_MERGE('{"name": "x"}', '{"id": 47}');
+-------------------------------------------+
| JSON_MERGE('{"name": "x"}', '{"id": 47}') |
+-------------------------------------------+
| {"id": 47, "name": "x"}                       |
+-------------------------------------------+
mysql> SELECT JSON_MERGE('{"id": "x"}', '{"id": 47}');
+-------------------------------------------+
| JSON_MERGE('{"id": "x"}', '{"id": 47}') |
+-------------------------------------------+
| {"id": ["x",47]}                             |
+-------------------------------------------+
mysql> SELECT JSON_MERGE('1', 'true');
+-------------------------+
| JSON_MERGE('1', 'true') |
+-------------------------+
| [1, true]                  |
+-------------------------+
mysql> SELECT JSON_MERGE('[1, 2]', '{"id": 47}');
+------------------------------------+
| JSON_MERGE('[1, 2]', '{"id": 47}') |
+------------------------------------+
| [1, 2, {"id": 47}]                    |
+------------------------------------+

7. JSON_SET オペレーション

JSON_SET オペレーションは、すでに存在する場合は更新し、存在しない場合は挿入します。 JSON_REPLACE:

上記は、新しい MySQL 5.7 の機能 | Json 列と生成された列の内容 (中央) です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

MySQL 5.7 の新機能 Json 列と生成された列 (中)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。