INCLUDE_NULL_VALUES指令
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
INCLUDE_NULL_VALUES
指令允许在输出文档中包含 NULL
值。
默认情况下,NULL
值会从 FOR JSON
文档输出中省略。考虑以下查询
SELECT id, nullif(cd, 'en') AS cd FROM langauge ORDER BY id FOR JSON AUTO
create.select( LANGUAGE.ID, nullif(LANGUAGE.CD, "en").as(LANGUAGE.CD)) .from(LANGUAGE) .orderBy(LANGUAGE.ID) .forJSON().auto() .fetch();
此查询生成如下文档
[ {"id":1}, {"id":2,"cd":"de"}, {"id":3,"cd":"fr"}, {"id":4,"cd":"pt"} ]
如果您更喜欢显式的 NULL
值,请编写
SELECT id, nullif(cd, 'en') AS cd FROM langauge ORDER BY id FOR JSON AUTO, INCLUDE_NULL_VALUES
create.select( LANGUAGE.ID, nullif(LANGUAGE.CD, "en").as(LANGUAGE.CD)) .from(LANGUAGE) .orderBy(LANGUAGE.ID) .forJSON().auto().includeNullValues() .fetch();
此查询生成如下文档
[ {"id":1,"cd":null}, {"id":2,"cd":"de"}, {"id":3,"cd":"fr"}, {"id":4,"cd":"pt"} ]
方言支持
此示例使用 jOOQ
select(BOOK.ID).from(BOOK).orderBy(BOOK.ID).forJSON().auto().includeNullValues()
翻译成以下特定方言的表达式
Aurora Postgres, CockroachDB, Postgres, YugabyteDB
SELECT json_agg(json_build_object('ID', ID)) FROM ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID ) t
ClickHouse
SELECT toJSONString(CAST(groupArray(toJSONString(map('ID', ID))) AS Array(JSON))) FROM ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID ) t
DB2
SELECT CAST(('[' || listagg( json_object( KEY 'ID' VALUE ID NULL ON NULL ), ',' ) || ']') AS varchar(32672)) FROM ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID ) t
H2
SELECT json_arrayagg(json_object( KEY 'ID' VALUE ID NULL ON NULL )) FROM ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID ) t
MariaDB, MySQL
SET @t = @@group_concat_max_len; SET @@group_concat_max_len = 4294967295; SELECT json_merge_preserve( '[]', concat( '[', group_concat(json_object('ID', ID) SEPARATOR ','), ']' ) ) FROM ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID ) t; SET @@group_concat_max_len = @t;
Oracle
SELECT json_arrayagg(json_object( KEY 'ID' VALUE ID NULL ON NULL RETURNING clob ) FORMAT JSON RETURNING clob) FROM ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID ) t
SQLServer
SELECT ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID FOR JSON AUTO, INCLUDE_NULL_VALUES )
Trino
SELECT cast(array_agg(CAST(map_from_entries(ARRAY[row( 'ID', CAST(ID AS json) )]) AS json)) AS json) FROM ( SELECT BOOK.ID FROM BOOK ORDER BY BOOK.ID ) t
ASE, Access, Aurora MySQL, BigQuery, Databricks, Derby, DuckDB, Exasol, Firebird, HSQLDB, Hana, Informix, MemSQL, Redshift, SQLDataWarehouse, SQLite, Snowflake, Sybase, Teradata, Vertica
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!