Mysql
 sql >> Baza danych >  >> RDS >> Mysql

JSON_EXTRACT() – Zwróć dane z dokumentu JSON w MySQL

W MySQL JSON_EXTRACT() funkcja zwraca dane z dokumentu JSON. Rzeczywiste zwrócone dane są określane przez ścieżkę, którą podasz jako argument.

Jako pierwszy argument podajesz dokument JSON, po którym następuje ścieżka danych do zwrócenia. Możesz również podać wiele ścieżek do zwracania danych z wielu miejsc w dokumencie.

Składnia

Składnia wygląda tak:

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

Gdzie json_doc jest dokumentem JSON i path jest ścieżką do wartości do zwrócenia.

Jeśli jest możliwe, że te argumenty mogą zwrócić wiele wartości, dopasowane wartości są automatycznie zawijane w tablicę w kolejności odpowiadającej ścieżkom, które je utworzyły.

Przykład 1 – Podstawowe użycie

Oto przykład do zademonstrowania.

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

Wynik:

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

W tym przypadku zwróciliśmy wartość klucza b .

Oto kolejny przykład:

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

Wynik:

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

Przykład 2 – Nieistniejąca ścieżka

Jeśli określisz ścieżkę, która nie istnieje, zwracana jest wartość NULL.

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

Wynik:

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

Otrzymasz również wartość NULL, jeśli którykolwiek z argumentów jest NULL .

Przykład 3 – Tablice

Oto przykład użycia tablicy.

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

Wynik:

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

Tablice używają numeracji od zera, więc w tym przypadku trzeci element jest zastępowany.

Oto kolejny przykład tablicy. Tym razem zwracamy wartość z zagnieżdżonej tablicy.

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

Wynik:

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

Przykład 4 – Wiele ścieżek

Możesz określić więcej niż jedną ścieżkę, aby zwrócić dane z wielu miejsc w dokumencie JSON.

Podstawowy przykład:

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

Wynik:

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

Przykład 5 – Większy dokument JSON

Oto przykład z nieco większym dokumentem JSON.

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

Wynik:

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

W razie potrzeby możemy również wybrać określony element z tablicy:

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

Wynik:

+---------------------------+
| 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. Nie wszystkie parametry zostały użyte w instrukcji SQL (Python, MySQL)

  2. Dynamiczny obrót MySQL

  3. Znajdź i zamień tekst w całej tabeli za pomocą zapytania MySQL

  4. Wyłącz ostrzeżenia i błędy w PHP i MySQL

  5. Jak skonfigurować replikację źródła-repliki w MySQL?