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.

Read syntax diagramSkip visual syntax diagramJSON_OBJECT(,KEYkey-expressionVALUEJSON-expressionFORMATJSONBSONNULL ON NULLABSENT ON NULLWITHOUT UNIQUE KEYSWITH UNIQUE KEYSRETURNING CLOB(2G) FORMAT JSONRETURNINGdata-typeFORMAT JSONENCODING UTF8FORMAT BSON)
data-type
Read syntax diagramSkip visual syntax diagramCHARACTERCHAR(1)( integer)CHARACTERCHARVARYINGVARCHAR( integer)CHARACTERCHARLARGE OBJECTCLOB(1M)( integerKMG)BINARY VARYINGVARBINARY(integer)BINARY LARGE OBJECTBLOB(1M)( integerKMG)

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

  1. 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"}
  2. 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}