【发布时间】:2020-11-05 14:03:28
【问题描述】:
下面的对比有没有区别
#1
where x = true
#2
where x is true
#3
where x = '1'
#4
where x
【问题讨论】:
标签: sql postgresql boolean
下面的对比有没有区别
#1
where x = true
#2
where x is true
#3
where x = '1'
#4
where x
【问题讨论】:
标签: sql postgresql boolean
这完全一样
WHERE x
TRUE、FALSE 或 NULL 恰好是 x。
这与第一种情况相同,除了x 为 NULL,在这种情况下它将为FALSE。所以它是一样的
WHERE coalesce(x, FALSE)
这恰好与第一种情况相同,因为'1' 被解释为TRUE。见the documentation:
boolean类型的数据类型输入函数接受这些字符串表示以表示“真实”状态:
trueyeson1
我首选的方法是最简单的:
WHERE x
【讨论】:
SELECT 中的WHERE 子句与CREATE INDEX 中的行为方式相同...一个过滤器何时为真,而另一个过滤器何时不同于“假” “……不确定了。
x 为NULL,@TheImpaler x IS TRUE 将返回FALSE。我的编号对应问题中的编号。
使用is 或is not 将处理值为空的情况。如果依赖=,比较的结果也会是null
select null is true as "is", null = true as "equal";
is | equal
----+-------
f |
(1 row)
【讨论】:
x is true 和 x = true 会做同样的事情。