JSON-поля в MySQL

 JSON-поля в MySQL

JSON-поля в MySQL

Начиная с версии 5.7.8 MySQL поддерживает поля с типом данных JSON (JavaScript Object Notation). Тип JSON позволяет автоматически проверять валидность JSON-документа в колонке JSON и показывать ошибку в случае, если документ некорректен; JSON-документы конвертируются во внутренний формат, который позволяет быстро получать доступ к элементам JSON-документа.

JSON-поля в MySQL

Создание JSON-величин

Пример 1. Создание JSON-массива
["abc", 10, null, true, false]
Пример 2. Создание JSON-объекта
{"k1": "value", "k2": 10}
Пример 3. Создание таблицы с JSON-полями
mysql> CREATE TABLE t1 (jdoc JSON);
Query OK, 0 rows affected (0.20 sec)

mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
Query OK, 1 row affected (0.01 sec)
Пример 4. Определение типа JSON-величины
mysql> SELECT JSON_TYPE('["a", "b", 1]');
+----------------------------+
| JSON_TYPE('["a", "b", 1]') |
+----------------------------+
| ARRAY                      |
+----------------------------+

mysql> SELECT JSON_TYPE('"hello"');
+----------------------+
| JSON_TYPE('"hello"') |
+----------------------+
| STRING               |
+----------------------+

Нормализация, объединение JSON-величин

Пример 5. Нормализация JSON-величины
mysql> SELECT JSON_OBJECT('key1', 1, 'key2', 'abc', 'key1', 'def');
+------------------------------------------------------+
| JSON_OBJECT('key1', 1, 'key2', 'abc', 'key1', 'def') |
+------------------------------------------------------+
| {"key1": 1, "key2": "abc"}                           |
+------------------------------------------------------+
Пример 6. Объединение JSON-величин
mysql> SELECT JSON_MERGE('{"a": 1, "b": 2}', '{"c": 3, "a": 4}');
+----------------------------------------------------+
| JSON_MERGE('{"a": 1, "b": 2}', '{"c": 3, "a": 4}') |
+----------------------------------------------------+
| {"a": [1, 4], "b": 2, "c": 3}                      |
+----------------------------------------------------+

Поиск и изменение JSON-величин

Пример 7. Объединение JSON-величин
mysql> SELECT JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name');
+---------------------------------------------------------+
| JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') |
+---------------------------------------------------------+
| "Aztalan"                                               |
+---------------------------------------------------------+

Добавить комментарий