JSON_OBJECT
JON_OBJECT 函数使用指定的 key: value 对生成 JSON 对象。 如果未提供 key: value 对,那么将返回空对象。
- key-name-expression
- JSON 密钥的名称。 名称不得为空。 使用冒号格式定义 key: value 对时, key-name-expression 必须是字符串文字。 否则, key-name-expression 的结果必须是内置字符或图形字符串数据类型。 它不能是 CHAR 或 VARCHAR 位数据。
- JSON 表达式
- 用于生成与 key-name-expression关联的 JSON 值的表达式。 此表达式的结果类型可以是除 XML , ROWID 或 DATALINK 以外的任何内置数据类型。 它不能是 CHAR 或 VARCHAR 位数据。 它不能是源自任何这些数据类型的用户定义的类型。
- FORMAT JSON 或 FORMAT BSON
- 指定 JSON-expression 是否已格式化数据。
- 格式 JSON
- JSON-expression 将格式化为 JSON 数据。 如果 JSON-expression 是字符或图形字符串数据类型,那么会将其视为 JSON 数据。 如果 JSON-expression 是二进制字符串数据类型,那么会将其解释为 UTF-8 或 UTF-16 数据。
- 格式 Bson
- JSON-expression 格式化为 JSON 数据的 BSON 表示,并且必须是二进制字符串数据类型。
- NULL ON NULL 或 ABSENT ON NULL
- 指定当 JSON-expression 为空值时要返回的内容。
- NULL ON NULL
- 送回空值。 这是缺省情况。
- 空的 ABSENT
- JSON 对象中省略了 key: value 对。
- 不带唯一键或 WITH UNIQUE KEYS
- 指定生成的 JSON 对象的键值是否必须唯一。
- 没有唯一键
- 将不会检查生成的 JSON 对象是否存在重复键。 这是缺省情况。
- 使用唯一键
- 生成的 JSON 对象需要具有唯一键值。 如果生成了重复的密钥,那么将发出错误。
- 正在返回 数据类型
- 指定结果的格式。
- 数据类型
- 结果的数据类型。 对于 CHAR 和 VARCHAR 结果, CCSID 不能为 65535。 缺省值为 CLOB (2G) CCSID 1208。
如果指定了 CCSID 并且 data-type 是 GRAPHIC , VARGRAPHIC 或 DBCLOB ,那么 CCSID 必须是 Unicode CCSID。
如果未指定 CCSID 属性,那么将按照 CAST 规范中的描述来确定 CCSID。
- 格式 JSON
- JSON 数据作为 JSON 字符串返回。
- ENCODING $TAG1 UTF8 $TAG2 或 ENCODING UTF16
- 当 data-type 是二进制字符串类型时要使用的编码。 此子句仅允许用于二进制字符串类型。 二进制字符串的缺省值为 UTF8。
- 格式 Bson
- 将以 BSON 格式返回 JSON 数据。 指定 FORMAT BSON 时, data-type 必须是 VARBINARY 或 BLOB 字符串类型。
示例
- 生成名称的 JSON 对象。
其中任一语句的结果都是以下 JSON 字符串:VALUES (JSON_OBJECT(KEY 'first' VALUE 'John', KEY 'last' VALUE 'Doe')); VALUES (JSON_OBJECT('first' : 'John', 'last' : 'Doe'));{"first":"John","last":"Doe"} - 生成一个 JSON 对象,其中包含员工编号为 "000020" 的员工的姓氏,雇佣日期和工资。
此语句的结果是以下 JSON 字符串:SELECT JSON_OBJECT( 'Last name' : LASTNAME, 'Hire date' : HIREDATE, 'Salary' : SALARY) FROM EMPLOYEE WHERE EMPNO = '000020';{"Last name":"THOMPSON","Hire date":"1973-10-10","Salary":41250.00}
