可用版本:Dev (3.21) | 最新 (3.20) | 3.19 | 3.18

JSON_KEYS

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

JSON_KEYS 函数是一个非标准的 JSON 函数,其灵感来自于 MySQL 的 JSON_KEYS 函数,可用于将 JSON 对象的键提取到一个 JSON 数组中。

SELECT json_keys(json_object(
  KEY 'a' VALUE 1
  KEY 'b' VALUE 2
))
create.select(jsonKeys(jsonObject(
          key("a").value(1),
          key("b").value(2))))
      .fetch();

结果如下

+-----------+
| json_keys |
+-----------+
| ["a","b"] |
+-----------+

方言支持

此示例使用 jOOQ

jsonKeys(jsonObject(key("a").value(1), key("b").value(2)))

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

Aurora Postgres, Postgres, YugabyteDB

(
  SELECT coalesce(
    json_agg(j),
    json_build_array()
  )
  FROM json_object_keys(json_build_object(
    'a', CAST(1 AS int),
    'b', CAST(2 AS int)
  )) as j(j)
)

ClickHouse

toJSONString(JSONExtractKeys(jsonMergePatch(
  toJSONString(map('a', 1)),
  toJSONString(map('b', 2))
)))

CockroachDB

(
  SELECT coalesce(
    json_agg(j),
    json_build_array()
  )
  FROM json_object_keys(json_build_object(
    'a', CAST(1 AS int4),
    'b', CAST(2 AS int4)
  )) as j(j)
)

DuckDB

to_json(json_keys(json_object(
  'a', 1,
  'b', 2
)))

MariaDB

json_keys(json_merge_preserve(
  '{}',
  json_object('a', 1),
  json_object('b', 2)
))

MySQL

json_keys(json_object(
  'a', 1,
  'b', 2
))

Oracle

json_keys(json_object(
  KEY 'a' VALUE 1,
  KEY 'b' VALUE 2
))

Snowflake

object_keys(object_construct_keep_null(
  'a', 1,
  'b', 2
))

SQLite

(
  SELECT json_group_array(key)
  FROM json_each(json_object(
    'a', 1,
    'b', 2
  ))
)

Trino

CAST(map_keys(cast(CAST(map_from_entries(ARRAY[
  row(
    'a',
    CAST(1 AS json)
  ),
  row(
    'b',
    CAST(2 AS json)
  )
]) AS json) as map(varchar, json))) AS json)

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

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

反馈

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

The jOOQ Logo