sql >> Database >  >> RDS >> Oracle

JSON_OBJECT() Functie in Oracle

In Oracle Database, de JSON_OBJECT() functie maakt een JSON-object van een reeks sleutel-waardeparen of één objecttype-instantie.

Syntaxis

De syntaxis gaat als volgt:

JSON_OBJECT
  ( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
     ,]...
    [ JSON_on_null_clause ] [ JSON_returning_clause ]
    [ STRICT ] 
    [ WITH UNIQUE KEYS ]  )

Waar:

  • [ KEY ] key_expr VALUE val_expr specificeert een sleutel/waarde-paar van een eigenschap.
  • FORMAT JSON geeft aan dat de invoerreeks JSON is en daarom niet in de uitvoer wordt geciteerd.
  • JSON_on_null_clause specificeert het gedrag dat moet worden gebruikt wanneer expr is gelijk aan null (d.w.z. neem null-waarden op in de uitvoer of niet).
  • JSON_returning_clause specificeert het type retourwaarde.
  • STRICT controleert of de uitvoer van de JSON-generatiefunctie de juiste JSON is. Als de controle mislukt, wordt er een syntaxisfout gegenereerd.
  • WITH UNIQUE KEYS garandeert dat gegenereerde JSON-objecten unieke sleutels hebben.

Voorbeeld

Hier is een voorbeeld om te laten zien hoe het werkt:

SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;

Resultaat:

{"score":37}

De KEY deel is optioneel, dus met het volgende wordt hetzelfde resultaat bereikt:

SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;

Resultaat:

{"score":37}

Meerdere sleutel/waarde-paren

Hier is een voorbeeld met meerdere sleutel/waarde-paren:

SELECT JSON_OBJECT(
    KEY 'fname' VALUE 'Homer',
    KEY 'lname' VALUE 'Escobar',
    KEY 'score' VALUE 237
    ) 
FROM DUAL;

Resultaat:

{"fname":"Homer","lname":"Escobar","score":237}

Geneste JSON

Als een van de waarden die u doorgeeft JSON bevat, kunt u de FORMAT JSON . gebruiken argument om aan te geven dat het JSON bevat en niet in de uitvoer mag worden aangehaald.

Voorbeeld:

SELECT JSON_OBJECT(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}' 
    FORMAT JSON
    ) 
FROM DUAL;

Resultaat:

{"details":{"name": "Peter", "score": 64}}

Dit gebeurt er als we de FORMAT JSON verwijderen deel:

SELECT JSON_OBJECT(
    KEY 'details' 
    VALUE '{"name": "Peter", "score": 64}'
    ) 
FROM DUAL;

Resultaat:

{"details":"{\"name\": \"Peter\", \"score\": 64}"} 

Databasevoorbeeld

Stel dat we de volgende query uitvoeren:

SELECT *
FROM regions;

Resultaat:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

Hier is dezelfde zoekopdracht, maar met de geselecteerde kolommen doorgegeven aan de JSON_OBJECT() functie:

SELECT JSON_OBJECT(*) 
FROM regions;

Resultaat:

{"REGION_ID":1,"REGION_NAME":"Europe"}                    
{"REGION_ID":2,"REGION_NAME":"Americas"}                  
{"REGION_ID":3,"REGION_NAME":"Asia"}                      
{"REGION_ID":4,"REGION_NAME":"Middle East and Africa"}

En hier is het met slechts één kolom doorgegeven aan de functie:

SELECT JSON_OBJECT(region_name) 
FROM regions;

Resultaat:

{"region_name":"Europe"}                    
{"region_name":"Americas"}                  
{"region_name":"Asia"}                      
{"region_name":"Middle East and Africa"} 

Zie de documentatie van Oracle voor een meer gedetailleerde uitleg van deze functie.


  1. Hoe kan ik een kolom vullen met willekeurige getallen in SQL? Ik krijg dezelfde waarde in elke rij

  2. MySQL-conversiefunctie

  3. ODP.NET implementeren en configureren om te werken zonder installatie met Entity Framework

  4. BadImageFormatException. Dit gebeurt bij het uitvoeren in 64-bits modus met de 32-bits Oracle-clientcomponenten geïnstalleerd