Mysql
 sql >> база данни >  >> RDS >> Mysql

JSON_EXTRACT() – Връща данни от JSON документ в MySQL

В MySQL, JSON_EXTRACT() функцията връща данни от JSON документ. Действително върнатите данни се определят от пътя, който предоставяте като аргумент.

Предоставяте документа JSON като първи аргумент, последван от пътя на данните за връщане. Можете също да предоставите множество пътища за връщане на данни от множество места в документа.

Синтаксис

Синтаксисът е така:

JSON_EXTRACT(json_doc, path[, path] ...)

Където json_doc е JSON документът и path е пътят към стойността за връщане.

Ако е възможно тези аргументи да връщат множество стойности, съвпадащите стойности се обвиват автоматично като масив в реда, съответстващ на пътищата, които ги създават.

Пример 1 – Основна употреба

Ето пример за демонстрация.

SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
| 2      |
+--------+

В този случай върнахме стойността на ключа b .

Ето още един пример:

SELECT 
  JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
| "Bart" |
+--------+

Пример 2 – Несъществуващ път

Ако посочите път, който не съществува, се връща стойност NULL.

SELECT 
  JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Освен това ще получите стойност NULL, ако някой от аргументите е NULL .

Пример 3 – Масиви

Ето пример за използване на масив.

SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
| 3      |
+--------+

Масивите използват номериране на базата на нула, така че в този случай третият елемент се заменя.

Ето още един пример за масив. Този път връщаме стойност от вложен масив.

SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
| 4      |
+--------+

Пример 4 – Множество пътища

Можете да посочите повече от един път, за да върнете данни от множество места в JSON документа.

Основен пример:

SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
| [2, 4] |
+--------+

Пример 5 – По-голям JSON документ

Ето пример с малко по-голям JSON документ.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';

Резултат:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| ["Homer", 39, ["Eating", "Sleeping"]] |
+---------------------------------------+

Можем също да изберем конкретен елемент от масива, ако е необходимо:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';

Резултат:

+---------------------------+
| Result                    |
+---------------------------+
| ["Homer", 39, "Sleeping"] |
+---------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съветникът за Entity Framework се срива на MySQL

  2. Проверете припокриването на периодите от време в MySQL

  3. Как да върнете позицията на аргумент в списък с аргументи в MySQL

  4. Как мога временно да деактивирам ограничение за външен ключ в MySQL?

  5. Как да генерирате скрипт от диаграма в MySQL Workbench