理解 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中文網其他相關文章!