gpt4 book ai didi

postgresql - 如何在 JOOQ 中为 PostgreSQL 编写正确的 bool 比较

转载 作者:行者123 更新时间:2023-11-29 13:41:12 24 4
gpt4 key购买 nike

我有一个包含 bool 列 b 的表 t。

db.select(T.B).from(T).where(T.B.isTrue()).fetch();
db.select(T.B).from(T).where(T.B.eq(Boolean.TRUE)).fetch();

这两个语句都被翻译成相同的 sql 查询:

select "public"."T"."B" from "public"."T" where "public"."T"."B" = true;

这是行不通的,因为对于 bool 值比较,必须使用关键字“is”:

select "public"."T"."B" from "public"."T" where "public"."T"."B" is true;

有没有办法正确地写这个?

最佳答案

jOOQ 目前不支持 SQL <boolean test>表达式(即 x IS [ NOT ] <truth value> )

然而,在“真实”的情况下,这并不是真正必要的。您可以将列直接传递给 where 子句:

where(T.B)

... 效果相同。要获得逆谓词,您可以编写

where(not(T.B))

如果你想要空安全比较,你也可以使用 Field.isNotDistinctFrom() Field.isDistinctFrom()

where(T.B.isNotDistinctFrom(true))
where(T.B.isDistinctFrom(true))

关于postgresql - 如何在 JOOQ 中为 PostgreSQL 编写正确的 bool 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55143042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com