JSON_ARRAYAGG
La función JSON_ARRAYAGG devuelve una matriz JSON que contiene un elemento de matriz para cada valor en un conjunto de valores JSON o SQL.
- expresión-JSON
- La expresión que se utiliza para generar un valor en la matriz JSON. El tipo de resultado de esta expresión puede ser cualquier tipo de datos incorporado excepto XML, ROWID o DATALINK. No pueden ser datos de bits CHAR o VARCHAR. No puede ser un tipo definido por el usuario que tenga su origen en cualquiera de estos tipos de datos.
- FORMAT JSON o FORMAT BSON
- Especifica si la expresión JSON ya tiene datos formateados.
- JSON FORMAT
- La expresión JSON se formatea como datos JSON. Si expresión JSON es un tipo de datos de serie gráfica o de caracteres, se trata como datos JSON. Si expresión JSON es un tipo de datos de serie binaria, se interpreta como datos UTF-8 o UTF-16 .
- FORMATO BSON
- La expresión JSON se formatea como la representación BSON de los datos JSON y debe ser un tipo de datos de serie binaria.
- ORDER BY
- Especifica el orden de las filas del mismo conjunto de agrupación que se procesan en la agregación. Si no se especifica la cláusula ORDER BY, o si la cláusula ORDER BY no puede diferenciar el orden del valor de clave de clasificación, las filas del mismo conjunto de agrupación se ordenan de forma arbitraria.
- expresión-clave-clasificación
- Especifica un valor de clave de ordenación que es un nombre de columna o una expresión. El tipo de datos de la columna o expresión no debe ser un valor DATALINK o XML.
- ASC
- Procesa la expresión-clave-clasificación en orden ascendente. Este es el valor por omisión.
- DESC
- Procesa la expresión-clave-clasificación en orden descendente.
El orden se basa en los valores de las claves de clasificación, que pueden o no utilizarse en la expresión JSON.
La suma de los atributos de longitud de la expresión-clave-clasificaciónno debe superar los 3.5 gigabytes.
Si una secuencia de clasificación distinta de *HEX está en vigor cuando se ejecuta la sentencia que contiene la función JSON_ARRAYAGG y la expresión-clave-clasificaciónson datos SBCS, datos mixtos o datos Unicode, el resultado se obtiene comparando los valores ponderados. Los valores ponderados se derivan aplicando la secuencia de clasificación a las expresiones-clave-clasificación.
- NOT ON NULL o NULL ON NULL
- Especifica qué se debe devolver cuando un elemento de matriz producido por expresión JSON es el valor nulo.
- AUSENTE EN NULO
- Un elemento de matriz nulo no se incluye en la matriz JSON. Este es el valor por omisión.
- NULL ON NULL
- Se incluye un elemento de matriz nulo en la matriz JSON.
- DEVOLVIENDO tipo-datos
- Especifica el formato del resultado.
- tipo-datos
- El tipo de datos del resultado. Para los resultados CHAR y VARCHAR, el CCSID no puede ser 65535. El valor predeterminado es CLOB (2G) CCSID 1208.
Si se especifica un CCSID y el tipo-datos es GRAPHIC, VARGRAPHIC o DBCLOB, el CCSID debe ser un CCSID Unicode.
Si no se especifica el atributo CCSID, el CCSID se determina tal como se describe en la especificación CAST.
- JSON FORMAT
- Los datos JSON se devuelven como una serie JSON.
- ENCODING UTF8 o ENCODING UTF16
- La codificación que se utiliza cuando tipo-datos es un tipo de serie binaria. Esta cláusula sólo está permitida para tipos de serie binaria. El valor predeterminado para las series binarias es UTF8.
El resultado puede ser nulo. Si el conjunto de valores está vacío, el resultado es el valor nulo.
Ejemplo
- Devuelve una matriz JSON que contiene todos los números de departamento.
El resultado es la siguiente matriz JSON.SELECT JSON_ARRAYAGG(deptno) AS deptlist FROM dept;["A00","B01","C01","D01","D11","D21","E01","E11","E21","F22","G22","H22","I22","J22"] - Devuelve una matriz JSON para cada departamento que contiene una lista de empleados asignados a dicho departamento.
El resultado son las 2 filas siguientes.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"] - Devuelve un objeto JSON que contiene una lista de departamentos y empleados de cada departamento.
El resultado son las 3 filas siguientes.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"}
