<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 9.23\. 行和數組比較 本節描述幾個特殊的構造,用于在多組值之間進行多重比較。 這些形式語法上和上一節的子查詢形式相關,但是不涉及子查詢。 這種形式涉及的數組子表達式是PostgreSQL的擴展; 其它的是SQL兼容的。所有本節記錄的表達式形式都返回布爾值(真/假)。 ## 9.23.1\. `IN` ``` _expression_ IN (_value_ [, ...]) ``` 右邊是一個圓括弧包圍的標量列表。如果左邊的表達式結果等于任何右邊表達式中的一個, 結果為"真"。它是下面這種方式的縮寫 ``` _expression_ = _value1_ OR _expression_ = _value2_ OR ... ``` 請注意,如果左邊表達式的值為 NULL ,或者沒有相等的右邊值并且至少有一個右邊表達式的值為 NULL , 那么`IN`的結果將是 NULL ,而不是假。這個行為遵照 SQL 處理布爾值和 NULL 組合時的規則。 ## 9.23.2\. `NOT IN` ``` _expression_ NOT IN (_value_ [, ...]) ``` 右邊是一個圓括弧包圍的標量列表。如果左邊的表達式結果不等于任何右邊表達式,結果為"真"。 它是下面這種方式的縮寫 ``` _expression_ <> _value1_ AND _expression_ <> _value2_ AND ... ``` 請注意,如果左邊表達式的值為 NULL ,或者沒有相等的右邊值并且至少有一個右邊表達式的值為 NULL , 那么`NOT IN`的結果將是 NULL ,而不是真。這個行為遵照 SQL 處理布爾值和 NULL 組合時的規則。 > **Tip:** `x NOT IN y`在所有場合都等價于`NOT (x IN y)`。 但是,在處理 NULL 的時候,用`NOT IN`比用`IN`更容易迷惑新手。 最好用正邏輯來表達你的條件。 ## 9.23.3\. `ANY`/`SOME` (array) ``` _expression_ _operator_ ANY (_array expression_) _expression_ _operator_ SOME (_array expression_) ``` 右邊是一個圓括弧包圍的表達式,它必須生成一個數組值。左邊表達式使用`_operator_` 對數組的每一個元素進行一次計算和比較,其結果必須是布爾值。如果至少獲得一個真值, 則`ANY`結果為"真"。如果全部獲得假值,則結果是"假" (包括數組不含任何元素的情況)。 如果數組表達式的值為 NULL ,那么`ANY`的結果也為 NULL 。 如果左邊表達式的值為 NULL ,那么`ANY`的結果通常也為 NULL (某些不嚴格的比較操作符可能得到不同的結果)。另外, 如果右邊的數組表達式中包含 NULL 元素并且沒有為真的比較結果, 那么`ANY`的結果將是 NULL(某些不嚴格的比較操作符可能得到不同的結果), 而不是假。這個行為遵照 SQL 處理布爾值和 NULL 組合時的規則。 `SOME`是`ANY`的同意詞。 ## 9.23.4\. `ALL` (array) ``` _expression_ _operator_ ALL (_array expression_) ``` 右邊是一個圓括弧包圍的表達式,它必須生成一個數組值。左邊表達式使用`_operator_` 對數組的每一個元素進行一次計算和比較,其結果必須是布爾值。如果全部獲得真值,`ALL` 結果為"真"(包括數組不含任何元素的情況)。如果至少獲得一個假值,則結果是"假"。 如果數組表達式的值為 NULL ,那么`ALL`的結果也為 NULL 。 如果左邊表達式的值為 NULL ,那么`ALL`的結果通常也為 NULL (某些不嚴格的比較操作符可能得到不同的結果)。另外, 如果右邊的數組表達式中包含 NULL 元素并且沒有為假的比較結果,那么`ALL` 的結果將是 NULL(某些不嚴格的比較操作符可能得到不同的結果),而不是真。 這個行為遵照 SQL 處理布爾值和 NULL 組合時的規則。 ## 9.23.5\. 逐行比較 ``` _row_constructor_ _operator_ _row_constructor_ ``` 兩邊都是一個[Section 4.2.13](#calibre_link-1524)所述的行構造器; 兩個行的字段數必須相同。兩邊都被計算并且逐行比較。目前,用于比較的 `_operator_`操作符僅允許為 `=`, `&lt;&gt;`, `&lt;`, `&lt;=`, `&gt;`, `&gt;=`或與其具有相似的語意。 特別地,如果一個操作符屬于 B-tree 操作符類,那么該操作符可以是一個行比較操作符或除`=` 之外的 B-tree 操作符類。 `=`和`&lt;&gt;`與其它操作符稍有區別。如果兩行對應的元素全都非空且相等, 那么這兩行就被認為是相等的;如果兩行對應的元素中有任意一對非空且不等, 那么這兩行就被認為是不等的;否則這兩行的比較結果是未知(NULL)。 對于 `&lt;`, `&lt;=`, `&gt;`, `&gt;=`操作符, 行中的元素將按照從左到右的順序依次進行比較,直到遇見一對不相等的元素或者一對 NULL 值。 如果這對元素中存在至少一個 NULL 值,那么比較的結果是 NULL ; 否則這對元素的比較結果就是最終的比較結果。例如,`ROW(1,2,NULL) &lt; ROW(1,3,0)` 的結果是真而不是 NULL ,因為比較到第二對元素的時候就已經得到了最終結果,不需要對第三對元素進行比較了。 > **Note:** 在PostgreSQL 8.2之前,`&lt;`, `&lt;=`, `&gt;`, `&gt;=`并不遵守 SQL 標準。比如,`ROW(a,b) &lt; ROW(c,d)` 將等價于`a &lt; c AND b &lt; d`,而正確的做法應當是等價于`a &lt; c OR (a = c AND b &lt; d)`。 ``` _row_constructor_ IS DISTINCT FROM _row_constructor_ ``` 這個構造類似于`&lt;&gt;`行比較,但是它對 NULL 輸入不生成 NULL , 而是認為任何 NULL 都不等于任何非 NULL ,并且 NULL 之間是相等的。因此, 結果要么是真要么是假,而絕不會是未知(NULL)。 ``` _row_constructor_ IS NOT DISTINCT FROM _row_constructor_ ``` 這個構造類似于`=`行比較,但是它對 NULL 輸入不生成 NULL , 而是認為任何 NULL 都不等于任何非 NULL ,并且 NULL 之間是相等的。 因此,結果要么是真要么是假,而絕不會是未知(NULL)。 > **Note:** 如果結果依賴于比較兩個NULL值或一個NULL值和一個非NULL值,SQL 規范要求逐行比較返回 NULL。 PostgreSQL僅當比較兩個行構造的結果或一個行構造器和子查詢的輸出時這樣做 (就像[Section 9.22](#calibre_link-1795)描述的那樣)。在其它情況下,兩個復合類型的值進行比較, 認為兩個NULL字段值是相等的,并且NULL大于非NULL。這是必要的,如此才能有一致的排序和復合類型的索引行為。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看