JSON_OBJECT función escalar
La función JSON_OBJECT genera un objeto JSON utilizando los pares key:value (key:value (clave:valor)) especificados. Si no se proporciona ningún par key:value (clave:valor), se devuelve un objeto vacío.
Aunque el esquema para esta función es SYSIBM, la función no se puede especificar como un nombre calificado.
- clave-expresión
- El nombre de la clave JSON. El nombre no debe ser un valor nulo (SQLSTATE 22004). El resultado de la expresión-clave debe ser un tipo de datos de serie de caracteres incorporada, salvo los siguientes tipos de datos (SQLSTATE 42815):
- GRAPHIC
- VARGRAPHIC
- DBCLOB
- CHAR FOR BIT DATA
- VARCHAR FOR BIT DATA
- expresión JSON
- La expresión que se utiliza para generar el valor JSON que está asociado a la expresión-clave.El tipo de resultado de esta expresión puede ser cualquier tipo de datos incorporado, excepto los tipos de datos siguientes (SQLSTATE 42815):
- GRAPHIC
- VARGRAPHIC
- DBCLOB
- BINARY
- CHAR FOR BIT DATA
- VARCHAR FOR BIT DATA
- XML
- Un tipo definido por el usuario que tiene su origen en cualquiera de los tipos de datos listados anteriormente
Si el valor generado es numérico, no puede ser Infinity, NaN o sNaN (SQLSTATE 22023).
Si no se especifica el valor de FORMAT JSON o FORMAT BSON, y el valor que se genera no es numérico, se eluden los caracteres especiales (por ejemplo, barra inclinada invertida o comillas dobles) en la cadena de resultado.
Si no se especifica FORMAT JSON o FORMAT BSON y la expresión es del tipo de serie binaria, se interpreta como FORMAT BSON.
- FORMAT JSON
- La expresión JSON se formatea como datos JSON.
Si la expresión JSON es un tipo de datos de serie de caracteres, se tratará como datos JSON.
Si la expresión JSON es un tipos de datos de serie binaria, se interpretará como datos UTF-8.
- FORMAT BSON
- Especifica que la expresión JSON presenta el formato de representación BSON de datos JSON (SQLSTATE 22032). La expresión JSON debe ser un tipo de datos de serie binaria (SQLSTATE 42815).
- ON NULL
- Especifica qué debe devolverse cuando la expresión JSON es el valor nulo.
- NULL ON NULL
- Se devuelve un serie de caracteres que representa el valor nulo. Esta cláusula es el valor por omisión.
- ABSENT ON NULL
- El par key:value (key:value (clave:valor)) se omite del objeto JSON.
- WITHOUT UNIQUE KEYS o WITH UNIQUE KEYS
- Especifica si los valores clave del objeto JSON resultante deben ser únicos.
- WITHOUT UNIQUE KEYS
- No se comprueba si hay claves duplicadas en el objeto JSON resultante. Esta cláusula es el valor por omisión.
- WITH UNIQUE KEYS
- El objeto JSON resultante debe tener valores de clave únicos (SQLSTATE 22037).
Se recomienda generar un objeto JSON con claves únicas. Si la expresión-clave genera nombres de clave únicos, omita WITH UNIQUE KEYS para mejorar el rendimiento.
- RETURNING tipo-datos
- El tipo de datos del resultado puede ser CHAR, VARCHAR, CLOB, VARBINARY o BLOB (SQLSTATE 42815). El valor por omisión es CLOB (2 GB).
Consulte Sentencia CREATE TABLE para obtener la descripción de los tipos de datos incorporados.
- FORMAT JSON
- Los datos devueltos están formateados como datos JSON.
- ENCODING UTF8
- Especifica la codificación que se va a utilizar cuando el valor de tipo de datos sea un tipo de serie binaria. Esta cláusula solamente se permite para tipos de series binarias. El valor por omisión para las series binarias es UTF-8.
- FORMAT BSON
- Los datos devueltos se formatean como la representación BSON de los datos JSON (SQLSTATE 22032). Los datos tipos-datos deben ser un tipo de datos de serie binaria (SQLSTATE 42815).
Notas
- Si los marcadores de parámetros no se emiten de forma explícita en un tipo de datos soportado, se devuelve un error (SQLSTATE 42815)
ejemplos
- Genere un objeto JSON para un nombre de persona.
VALUES JSON_OBJECT(KEY 'first' VALUE 'John', KEY 'last' VALUE 'Doe') 1 ----------------------------- {"first":"John","last":"Doe"} - Genere un objeto JSON que contenga el apellido, la fecha de contratación y el salario del empleado con el número de empleado '000020'.
SELECT JSON_OBJECT(KEY 'Last name' VALUE LASTNAME, KEY 'Hire date' VALUE HIREDATE, KEY 'Salary' VALUE SALARY) FROM EMPLOYEE WHERE EMPNO = '000020'; 1 ------------------------------------------------------------------- {"Last name":"THOMPSON","Hire date":"1973-10-10","Salary":41250.00}
