JSON-поля в MySQL
Начиная с версии 5.7.8 MySQL поддерживает поля с типом данных JSON (JavaScript Object Notation). Тип JSON позволяет автоматически проверять валидность JSON-документа в колонке JSON и показывать ошибку в случае, если документ некорректен; JSON-документы конвертируются во внутренний формат, который позволяет быстро получать доступ к элементам JSON-документа.
JSON-поля в MySQL
VIDEO
Создание 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" |
+---------------------------------------------------------+