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

BOOL_AND

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

BOOL_AND() 聚合函数计算聚合组中所有布尔值的布尔合取。换句话说,如果

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

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

SELECT
  bool_and(ID < 4),
  bool_and(ID < 5)
FROM BOOK
create.select(
         boolAnd(BOOK.ID.lt(4)),
         boolAnd(BOOK.ID.lt(5)))
      .from(BOOK)

产生

+----------+----------+
| bool_and | bool_and |
+----------+----------+
| false    | true     |
+----------+----------+

方言支持

此示例使用 jOOQ

boolAnd(BOOK.ID.lt(4))

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

访问

(min(
  SWITCH(BOOK.ID < 4, 1, TRUE, 0)
) = 1)

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

CASE
  WHEN min(
    CASE
      WHEN BOOK.ID < 4 THEN 1
      ELSE 0
    END
  ) = 1 THEN 1
  WHEN NOT (min(
    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

(min(
  CASE
    WHEN BOOK.ID < 4 THEN 1
    ELSE 0
  END
) = 1)

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

bool_and((BOOK.ID < 4))

BigQuery

logical_and((BOOK.ID < 4))

Exasol

every((BOOK.ID < 4))

Hana

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

Informix

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

Snowflake

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

引用此页

反馈

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

The jOOQ Logo