JSON_KEY_EXISTS
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
JSON_KEY_EXISTS 函数是一个非标准的 JSON 函数,其灵感来源于 PostgreSQL 的 JSONB_EXISTS 函数或 ? 操作符,它可以用于检查 JSON 对象中是否存在某个键。
SELECT json_key_exists(json_object( KEY 'a' VALUE 1 ), 'a')
create.select(jsonKeyExists(jsonObject(
key("a").value(1)), "a"))
.fetch();
结果如下
+-----------------+ | json_key_exists | +-----------------+ | true | +-----------------+
jsonKeyExists(jsonObject(key("a").value(1)), "a")
翻译成以下特定方言的表达式
Aurora Postgres, Postgres, YugabyteDB
(CAST(json_build_object('a', CAST(1 AS int)) AS jsonb) ?? 'a')
BigQuery
json_query(
json_object('a', 1),
('$.' || 'a')
) IS NOT NULL
ClickHouse
JSONExtractRaw(
toJSONString(map('a', 1)),
'a'
) IS NOT NULL
CockroachDB
(json_build_object('a', CAST(1 AS int4)) ?? 'a')
DB2
coalesce(
json_query(
json_object(KEY 'a' VALUE 1),
('$.' || CAST('a' AS varchar(3998)))
),
nvl2(
json_query(
json_object(KEY 'a' VALUE 1),
('$.' || CAST('a' AS varchar(3998))) EMPTY ARRAY ON EMPTY
),
NULL,
'null'
)
) IS NOT NULL
DuckDB, SQLite
(json_object('a', 1)->'a') IS NOT NULL
MariaDB, MySQL
json_extract(
json_object('a', 1),
concat('$.', 'a')
) IS NOT NULL
Oracle
json_query( json_object(KEY 'a' VALUE 1), '$.a' ) IS NOT NULL
Snowflake
get(
object_construct_keep_null('a', 1),
'a'
) IS NOT NULL
Trino
json_extract(
CAST(map_from_entries(ARRAY[row(
'a',
CAST(1 AS json)
)]) AS json),
('$.' || 'a')
) IS NOT NULL
ASE, Access, Aurora MySQL, Databricks, Derby, Exasol, Firebird, H2, HSQLDB, Hana, Informix, MemSQL, Redshift, SQLDataWarehouse, SQLServer, Sybase, Teradata, Vertica
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!