gpt4 book ai didi

mysql - IFNULL() 等价于 PostgreSQL

转载 作者:行者123 更新时间:2023-11-29 05:05:30 26 4
gpt4 key购买 nike

我正在做一个从 MySQL 迁移到 PostgreSQL 的项目,有些函数在 PostgreSQL 中不能很好地工作,比如 IFNULL 函数。有的教程说在PostgreSQL中我们可以使用NULLIF来处理。当我尝试时遇到问题“NOT 的参数必须是 bool 类型,而不是整数类型”。

这是简单的 SQL:

SELECT * FROM `tableA` WHERE not(nullif(columnA, 0));

如何解决?也许有人可以解释它如何运作良好。谢谢

最佳答案

NULLIF() 与 IFNULL() 有很大不同。我认为您想要的是 COALESCE(),它将返回第一个非 NULL 参数(它可以有两个以上的参数):

SELECT * 
FROM table_a
WHERE NOT (COALESCE(column_a::boolean, false));

引用:9.17.2. COALESCE

此外,在 Postgres 中,您需要使用 truefalse。 0 和 1 不适用于 bool 文字。这就是您收到错误的原因:

argument of NOT must be type boolean, not type integer

如果 column_a 是一个整数,那么您必须将其转换为 boolean。这就是上面示例中的 column_a::boolean 所做的。它等效于 CAST(column_a AS boolean)

关于mysql - IFNULL() 等价于 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49042477/

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