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

BOOL_OR

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

BOOL_OR() 聚合函数计算聚合组中所有布尔值的布尔析取。换句话说,它是

  • 如果该参数对于组中的每一行都是 FALSE,则为 FALSE
  • 如果该参数对于组中至少一行是 TRUE,则为 TRUE

与大多数聚合函数一样,NULL 值不会被聚合,因此三值逻辑不适用于此处。

SELECT
  bool_or(ID >= 4),
  bool_or(ID >= 5)
FROM BOOK
create.select(
         boolOr(BOOK.ID.ge(4)),
         boolOr(BOOK.ID.ge(5)))
      .from(BOOK)

产生

+---------+---------+
| bool_or | bool_or |
+---------+---------+
| true    | false   |
+---------+---------+

方言支持

此示例使用 jOOQ

boolOr(BOOK.ID.ge(4))

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

访问

(max(
  SWITCH(BOOK.ID >= 4, 1, TRUE, 0)
) = 1)

ASE, DB2, Firebird, SQLDataWarehouse, SQLServer, Sybase, Teradata

CASE
  WHEN max(
    CASE
      WHEN BOOK.ID >= 4 THEN 1
      ELSE 0
    END
  ) = 1 THEN 1
  WHEN NOT (max(
    CASE
      WHEN BOOK.ID >= 4 THEN 1
      ELSE 0
    END
  ) = 1) THEN 0
END

Aurora MySQL, ClickHouse, Derby, H2, HSQLDB, MariaDB, MemSQL, MySQL, Oracle, Redshift, SQLite

(max(
  CASE
    WHEN BOOK.ID >= 4 THEN 1
    ELSE 0
  END
) = 1)

Aurora Postgres, CockroachDB, Databricks, DuckDB, Postgres, Trino, Vertica, YugabyteDB

bool_or((BOOK.ID >= 4))

BigQuery

logical_or((BOOK.ID >= 4))

Exasol

any((BOOK.ID >= 4))

Hana

CASE
  WHEN max(
    CASE
      WHEN BOOK.ID >= 4 THEN 1
      ELSE 0
    END
  ) = 1 THEN TRUE
  WHEN NOT (max(
    CASE
      WHEN BOOK.ID >= 4 THEN 1
      ELSE 0
    END
  ) = 1) THEN FALSE
END

Informix

CASE
  WHEN max(
    CASE
      WHEN BOOK.ID >= 4 THEN 1
      ELSE 0
    END
  ) = 1 THEN CAST('t' AS boolean)
  WHEN NOT (max(
    CASE
      WHEN BOOK.ID >= 4 THEN 1
      ELSE 0
    END
  ) = 1) THEN CAST('f' AS boolean)
END

Snowflake

boolor_agg((BOOK.ID >= 4))
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

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

The jOOQ Logo