理解 IN 和 ANY 结构
在 PostgreSQL 中,IN 和 ANY 都是执行集合比较的构造,用于确定值是否存在于集合中。
逻辑等价性
逻辑上,IN 等价于 = ANY。但是,它们的语法和功能有所不同。
语法变体
IN 和 ANY 各有两个语法变体:
功能差异
ANY 的优势
ANY 提供更大的灵活性,因为它可以与各种运算符组合使用,包括 =。例如:
<code class="language-sql">SELECT 'foo' LIKE ANY('{FOO,bar,%oo%}');</code>
规模和性能
对于大量值,对 IN 和 ANY 都使用集合可以提高性能。
反转和排除
要查找值不在给定数组中的行:
<code class="language-sql">SELECT * FROM tbl WHERE id <> ALL (ARRAY[1, 2]);</code>
上面代码块中的所有表达式都是等效的,并且将排除 id 值为 1 和 2 的行。
NULL 值的包含
默认情况下,id 为 NULL 的行将被排除。要包含它们,请使用以下表达式:
<code class="language-sql">SELECT * FROM tbl WHERE (id = ANY ('{1, 2}')) IS NOT TRUE;</code>
以上是PostgreSQL 中的 IN 与 ANY:主要区别是什么以及何时应该使用它们?的详细内容。更多信息请关注PHP中文网其他相关文章!