>  기사  >  데이터 베이스  >  MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(중간)

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(중간)

黄舟
黄舟원래의
2017-02-07 13:11:401234검색

첫 번째 제목

1. JSON_ARRAY_APPEND 배열 클래스 추가

이 사용법은 주로 JSON 필드의 값 배열 유형 데이터를 처리하는 데 사용됩니다. 이 함수는 자동으로 배열 형태로 변환되며, 이전 값이 배열의 첫 번째 요소로 사용된 후 추가됩니다:

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


Append 필드의 두 번째 값 배열에 요소 1:

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

다음과 같은 형식의 단일 값이 아닌 경우 요소 2를 필드의 첫 번째 값 배열에 추가합니다. 배열인 경우 배열로 변경되어 추가됩니다.

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

다음 형식의 단일 값이 아닌 경우 필드에서 두 번째 값의 첫 번째 배열에 요소 3을 추가합니다. 배열로 변경하고 필드에

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

를 추가합니다. 키가 "b"인 값 배열에 "x" 요소를 추가합니다:

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} |
+------------------------------------+





필드에 "c" 키가 있는 값 배열에서 "y" 요소 추가:

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"]                    |
+---------------------------------+

JSON 필드가 표준 JSON 유형인 경우 일괄 추가:

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

2. JSON_ARRAY_INSERT 배열 클래스 삽입

이 사용법은 주로 JSON 필드의 값 배열 유형 데이터를 처리하는 데 사용되며, 표준 배열 유형이 아닌 자동으로 배열 형태로 변환됩니다. 이전 값을 배열의 첫 번째 요소로 사용한 다음 추가:

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]]  |

문자 'x 삽입 배열의 첫 번째 값 앞에 '' 문자를 100번째 값 뒤에 삽입하세요. 너무 길면 마지막 값 뒤에 삽입하세요.

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

배열의 첫 번째 값에 , 'b' 키가 있는 값 배열 1 값 앞에 문자 요소 'x'를 입력합니다.

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

배열의 두 번째 값과 배열의 첫 번째 값 뒤에 문자 요소 '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]]     |
+---------------------------------------+

3. 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는 주로 병합에 사용됩니다. 둘이 배열인 경우 하나의 배열로 병합합니다. ; 두 개가 JSON인 경우 하나의 JSON으로 병합하고, 두 개의 JSON이 동일한 키를 갖는 경우 값이 두 개의 단일 값인 경우 배열로 병합됩니다. 하나는 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]"}          |
+----------------------------------------------------+

5. JSON_REMOVE 삭제 작업

JSON_REMOVE 삭제 작업은 비교적 간단합니다. 필드에서 특정 값을 배열에서 삭제합니다. 또는 JSON 형식:

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}]                    |
+------------------------------------+

6. JSON_REPLACE 작업

JSON_REPLACE 교체 작업이 있으면 교체하고, 없으면 무시하세요.

mysql> SET @j = '["a", ["b", "c"], "d"]';
mysql> SELECT JSON_REMOVE(@j, '$[1]');
+-------------------------+
| JSON_REMOVE(@j, '$[1]') |
+-------------------------+
| ["a", "d"]                 |
+-------------------------+
 
 
 
 
mysql> SET @j = '{"name": "x","id": 47}';
mysql> SELECT JSON_REMOVE(@j, '$.id');
+-------------------------+
| JSON_REMOVE(@j, '$.id') |
+-------------------------+
| {"name": "x"}              |
+-------------------------+
mysql> SELECT JSON_REMOVE(@j, '$.id', '$.name');
+-----------------------------------+
| JSON_REMOVE(@j, '$.id', '$.name') |
+-----------------------------------+
| {}                                       |
+-----------------------------------+
mysql> SET @j = '{"name": "x","id": [47,48]}';
mysql> SELECT JSON_REMOVE(@j, '$.id[1]');
+-------------------------+
| JSON_REMOVE(@j, '$.id') |
+-------------------------+
| {"id": [47],"name": "x"} |
+-------------------------+

7. JSON_SET 연산

JSON_SET 연산은 업데이트이고, 없으면 업데이트하고, 없으면 삽입합니다. JSON_SET, JSON_INSERT, JSON_REPLACE 실행 결과:

위는 MySQL 5.7의 새로운 기능 | Json Column 및 생성된 열(가운데)의 내용입니다. PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(중간)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.