可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12

JSON_OBJECT

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

JSON_OBJECT 函数用于从标量值生成简单的 JSON 对象,无需聚合 (另请参阅 JSON_OBJECTAGG)

SELECT json_object(
  KEY 'firstName' VALUE author.first_name,
  KEY 'lastName'  VALUE author.last_name
)
FROM author
create.select(jsonObject(
          key("firstName").value(AUTHOR.FIRST_NAME),
          key("lastName").value(AUTHOR.LAST_NAME)))
      .from(AUTHOR)
      .fetch();

结果如下

+--------------------------------------------+
| json_array                                 |
+--------------------------------------------+
| {"firstName":"Paulo","lastName":"Coelho"}  |
| {"firstName":"George","lastName":"Orwell"} |
+--------------------------------------------+

方言支持

此示例使用 jOOQ

jsonObject("firstName", AUTHOR.FIRST_NAME)

翻译成以下特定方言的表达式

Aurora Postgres, CockroachDB, Postgres, YugabyteDB

json_build_object('firstName', AUTHOR.FIRST_NAME)

BigQuery, DuckDB, MariaDB, MySQL, SQLite

json_object('firstName', AUTHOR.FIRST_NAME)

ClickHouse

toJSONString(map('firstName', AUTHOR.FIRST_NAME))

DB2, H2, Oracle

json_object(KEY 'firstName' VALUE AUTHOR.FIRST_NAME)

Snowflake

object_construct_keep_null('firstName', AUTHOR.FIRST_NAME)

SQLServer

(
  SELECT (
    SELECT *
    FROM (
      VALUES (AUTHOR.FIRST_NAME)
    ) t (firstName)
    FOR JSON PATH, INCLUDE_NULL_VALUES, WITHOUT_ARRAY_WRAPPER
  )
)

Trino

CAST(map_from_entries(ARRAY[row(
  'firstName',
  CAST(AUTHOR.FIRST_NAME AS json)
)]) AS json)

ASE, Access, Aurora MySQL, Databricks, Derby, Exasol, Firebird, HSQLDB, Hana, Informix, MemSQL, Redshift, SQLDataWarehouse, Sybase, Teradata, Vertica

/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

您对此页面有任何反馈吗? 我们很乐意听到您的反馈!

The jOOQ Logo