sql >> Databasteknik >  >> RDS >> Mysql

JSON_KEYS() – Returnera nycklarna från ett JSON-objekt i MySQL

I MySQL, JSON_KEYS() funktion returnerar nycklar från toppnivåvärdet för ett JSON-objekt. Nycklarna returneras som en JSON-array, eller, om en path argumentet ges, nycklarna på översta nivån från den valda sökvägen.

Du tillhandahåller JSON-dokumentet som ett argument till funktionen.

Du kan också (valfritt) tillhandahålla ett andra argument för att ange var "top-level"-sökvägen börjar inifrån JSON-dokumentet.

Syntax

Syntaxen ser ut så här:

JSON_KEYS(json_doc[, path])

Där json_doc är JSON-dokumentet och path är ett valfritt argument för att avgöra var "top-level"-sökvägen börjar i JSON-dokumentet.

Resultatmatrisen är tom om det valda objektet är tomt. Om värdet på toppnivån har kapslade underobjekt, inkluderar returvärdet inte nycklar från dessa underobjekt.

Exempel 1 – Grundläggande användning

Här är ett exempel att visa.

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

Resultat:

+-----------------+
| Result          |
+-----------------+
| ["a", "b", "c"] |
+-----------------+

Här är ett annat exempel:

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

Resultat:

+-----------------+
| Result          |
+-----------------+
| ["Age", "Name"] |
+-----------------+

Exempel 2 – Ange en sökväg

Här är ett exempel på hur du anger en sökväg. Detta gör att vi kan hämta nycklarna från ett kapslat objekt (istället för att vara begränsat till bara toppnivåobjektet i hela JSON-dokumentet).

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';

Resultat:

+-----------------+
| Result          |
+-----------------+
| ["d", "e", "f"] |
+-----------------+

Exempel 3 – Icke-existerande sökväg

Om du anger en sökväg som inte finns returneras ett NULL-värde.

SELECT 
  JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';

Resultat:

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

Du får också ett NULL-värde om något av argumenten är NULL eller om det första argumentet inte är ett JSON-objekt.

Exempel 4 – Arrayer

Matriser är inte objekt och de innehåller inte nyckel-/värdepar. Därför får du ett NULL-värde om du försöker returnera nycklar från en array.

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

Resultat:

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

Men om något av arrayens element innehåller ett objekt kan du fortfarande använda path argument för att hämta nycklarna från det objektet.

SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';

Resultat:

+------------+
| Result     |
+------------+
| ["a", "b"] |
+------------+

Exempel 5 – Tomma objekt

Om det valda objektet är tomt får du en tom array.

SELECT JSON_KEYS('{}') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
| []     |
+--------+

  1. java.lang.IllegalStateException:Det gick inte att läsa rad 0, kol -1 från CursorWindow - Android sqlite problem

  2. Hur man rangordnar rader inom en partition i SQL

  3. Hur man övervakar din ProxySQL med Prometheus och ClusterControl

  4. Bifoga strängar i enstaka citattecken i SQLite-frågeresultat