JSON_ARRAYAGG
La funzione JSON_ARRAYAGG restituisce un array JSON contenente un elemento schiera per ogni valore in una serie di valori JSON o SQL.
- JSON - espressione
- L'espressione da utilizzare per generare un valore nell'array JSON. Il tipo di risultato di questa espressione può essere qualsiasi tipo di dato incorporato tranne XML, ROWID o DATALINK. Non può essere di tipo CHAR o VARCHAR bit data. Non può essere un tipo definito dall'utente che viene originato su uno qualsiasi di questi tipi di dati.
- FORMAT JSON o FORMAT BSON
- Specifica se JSON - expression è già dati formattati.
- FORMATO JSON
- JSON - espressione è formattata come dati JSON. Se JSON - expression è un tipo di dati di stringa di carattere o grafico, viene trattato come dati JSON. Se JSON - expression è un tipo di dati stringa binario, viene interpretato come dati UTF-8 o UTF-16 .
- FORMATO BSON
- JSON - expression è formattata come la rappresentazione BSON dei dati JSON e deve essere un tipo di dati stringa binario.
- ORDINA PER
- Specifica l'ordine delle righe dallo stesso set di raggruppamento che vengono elaborati nell'aggregazione. Se la clausola ORDER BY non è specificata o se la clausola ORDER BY non può differenziare l'ordine del valore chiave di ordinamento, le righe nello stesso gruppo di raggruppamento vengono ordinate arbitrariamente.
- sort - key - expression
- Specifica un valore chiave di ordinamento che sia un nome di colonna o un'espressione. Il tipo di dati della colonna o dell'espressione non deve essere un valore DATALINK o XML ..
- Asc
- Elabora l' sort - key - expression in ordine crescente. Questo è il valore predefinito.
- DESC
- Elabora l' sort - key - expression in ordine decrescente.
L'ordinamento si basa sui valori dei tasti di ordinamento, che potrebbero o non potrebbero essere utilizzati in JSON - expression.
La somma degli attributi di lunghezza delle espressioni della chiave di ordinamentonon deve superare 3.5 gigabyte.
Se una sequenza di collante diversa da *HEX è in vigore quando l'istruzione che contiene la funzione JSON_ARRAYAGG viene eseguita e i sort - key - expressions sono dati SBCS, dati misti o dati Unicode, il risultato è ottenuto confrontando i valori ponderati. I valori ponderati sono derivati applicando la sequenza di collante alle espressioni - chiave di ordinamento.
- ASSENTE SU NULL o NULL ON NULL
- Specifica cosa restituire quando un elemento schiera prodotto da JSON - expression è il valore nullo.
- ASSENTE SU NULL
- Un elemento schiera nullo non è incluso nell'array JSON. Questo è il valore predefinito.
- NULL SU NULL
- Un elemento schiera nullo è incluso nell'array JSON.
- RESTITUZIONE tipo di dati
- Specifica il formato del risultato.
- tipo di dati
- Il tipo di dati del risultato. Per i risultati di CHAR e VARCHAR, il CCSID non può essere 65535. Il default è CLOB (2G) CCSID 1208.
Se viene specificato un codice identificativo e il tipo di dati è GRAPHIC, VARGRAPHIC o DBCLOB, il CCSID deve essere un Unicode.
Se l'attributo CCSID non viene specificato, il CCSID viene determinato come descritto in Specifica CAST.
- FORMATO JSON
- I dati JSON vengono restituiti come stringa JSON.
- CODIFICA UTF8 o CODIFICA UTF16
- La codifica da utilizzare quando tipo - dati è un tipo di stringa binario. Questa clausola è consentita solo per i tipi di stringa binari. Il default per le stringhe binarie è UTF8.
Il risultato può essere nullo. Se la serie di valori è vuota, il risultato è il valore nullo.
Esempio
- Restituire un array JSON contenente tutti i numeri del reparto.
Il risultato è il seguente array JSON.SELECT JSON_ARRAYAGG(deptno) AS deptlist FROM dept;["A00","B01","C01","D01","D11","D21","E01","E11","E21","F22","G22","H22","I22","J22"] - Restituire un array JSON per ogni reparto contenente un elenco di dipendenti assegnati a quel reparto.
Il risultato sono le seguenti 2 righe.SELECT workdept, JSON_ARRAYAGG(lastname ORDER BY lastname) AS dept_employees FROM emp WHERE workdept LIKE 'D%' GROUP BY workdept;DEPTNO PROJLIST D11 ["ADAMSON","BROWN","JOHN","JONES","LUTZ","PIANKA","SCOUTTEN", "STERN","WALKER","YAMAMOTO","YOSHIMURA"] D21 ["JEFFERSON","JOHNSON","MARINO","MONTEVERDE","PEREZ","PULASKI","SMITH"] - Restituire un oggetto JSON che contiene un elenco di dipartimenti e dipendenti in ogni reparto.
Il risultato sono le seguenti 3 righe.SELECT JSON_OBJECT('department number' VALUE deptno, 'department name' VALUE deptname, 'employee list' VALUE JSON_ARRAYAGG( JSON_OBJECT('last name' VALUE lastname, 'employee id' VALUE empno) ORDER BY lastname)) FROM dept LEFT OUTER JOIN emp ON deptno = workdept WHERE deptno LIKE 'D%' GROUP BY deptno, deptname;{"department number":"D11","department name":"MANUFACTURING SYSTEMS", "employee list":[{"last name":"ADAMSON","employee id":"000150"}, {"last name":"BROWN","employee id":"000200"}, {"last name":"JOHN","employee id":"200220"}, {"last name":"JONES","employee id":"000210"}, {"last name":"LUTZ","employee id":"000220"}, {"last name":"PIANKA","employee id":"000160"}, {"last name":"SCOUTTEN","employee id":"000180"}, {"last name":"STERN","employee id":"000060"}, {"last name":"WALKER","employee id":"000190"}, {"last name":"YAMAMOTO","employee id":"200170"}, {"last name":"YOSHIMURA","employee id":"000170"}]} {"department number":"D21","department name":"ADMINISTRATION SYSTEMS", "employee list":[{"last name":"JEFFERSON","employee id":"000150"}, "last name":"JOHNSON","employee id":"000150"}, "last name":"MARINO","employee id":"000150"}, "last name":"MONTEVERDE","employee id":"000150"}, "last name":"PEREZ","employee id":"000150"}, "last name":"PULASKI","employee id":"000150"}, "last name":"SMITH","employee id":"000150"}]} {"department number":"D01","department name":"DEVELOPMENT CENTER"}
