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

NVL2

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

NVL2() 函数检查第一个参数是否为 NOT NULL,如果是,则产生第二个参数,否则产生第三个参数。它的工作方式与 IIF 函数CASE 表达式 类似。

SELECT
  nvl2(1,    2, 3),
  nvl2(null, 2, 3);
create.select(
  nvl2(val(1)             , 2, 3),
  nvl2(val((Integer) null), 2, 3)).fetch();

结果是

+------+------+
| nvl2 | nvl2 |
+------+------+
|    2 |    3 |
+------+------+

方言支持

此示例使用 jOOQ

nvl2(val(1), 2, 3)

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

Access, SQLServer

iif(1 IS NOT NULL, 2, 3)

ASE, Aurora MySQL, Aurora Postgres, BigQuery, ClickHouse, CockroachDB, Derby, DuckDB, Firebird, Hana, MemSQL, MySQL, Postgres, SQLDataWarehouse, SQLite, Sybase, Trino, YugabyteDB

CASE
  WHEN 1 IS NOT NULL THEN 2
  ELSE 3
END

DB2, Databricks, Exasol, H2, HSQLDB, Informix, MariaDB, Oracle, Redshift, Snowflake, Teradata, Vertica

nvl2(1, 2, 3)
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

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

The jOOQ Logo