Ugy*_*tro 3 mysql sql postgresql ifnull nullif
我正在做一个从 MySQL 迁移到 PostgreSQL 的项目,有些函数在 PostgreSQL 中不能很好地工作,比如IFNULL函数。有的教程说在PostgreSQL中我们可以用NULLIF它来处理。当我尝试时,我遇到了一个问题“ argument of NOT must be type boolean, not type integer”。
这是简单的 SQL:
SELECT * FROM `tableA` WHERE not(nullif(columnA, 0));
Run Code Online (Sandbox Code Playgroud)
如何解决?也许有人可以解释它如何运作良好。谢谢
NULLIF() 与 IFNULL() 非常不同。我认为你想要的是 COALESCE(),它将返回第一个非 NULL 参数(它可以有 2 个以上的参数):
SELECT *
FROM table_a
WHERE NOT (COALESCE(column_a::boolean, false));
Run Code Online (Sandbox Code Playgroud)
参考:9.17.2。合并
此外,在 Postgres 中,您需要使用true或false。0 和 1 不适用于布尔文字。这就是您收到错误的原因:
NOT 的参数必须是布尔类型,而不是整数类型
如果column_a是整数,则必须将其 CAST 为boolean. 这就是column_a::boolean上面例子中所做的。它相当于CAST(column_a AS boolean)。
| 归档时间: |
|
| 查看次数: |
10363 次 |
| 最近记录: |