2.in expression in (subquery)
in 的這種形式的右手邊是一個圓括弧括起來的子查詢, 它必須只返回一個字段。左手邊表達式對子查詢的結果的每一行進行一次計算和比較。 如果找到任何等于子查詢行的情況,那么 in 的結果就是"真"。 如果沒有找到相等行,那么結果是"假"(包括子查詢沒有返回任何行的特殊例子)。
請注意如果左手邊表達式生成 null,或者沒有相等的右手邊數值, 并且至少有一個右手邊行生成 null,那么 in 構造的結果將是 null,而不是假。 這個行為是遵照 sql 處理布爾和 null 值組合時的規則定的。
和 exists 一樣,假設子查詢將被完成運行完全是不明智的。 row_constructor in (subquery) 這種形式的 in 的左手邊是一個行構造器,右手邊是一個圓括弧括起來的子查詢,它必須返回和左手邊返回的行中表達式所構成的完全一樣多的字段。 左手邊表達式就子查詢結果的每一行進行計算很比較。如果找到任意相等的子查詢行,則 in 的結果為"真"。如果沒有找到相等行, 那么結果為"假"(包括子查詢不返回行的特殊例子)。 通常,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則進行組合的。 如果兩個行對應的成員都是非空并且相等,那么認為這兩行相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果所有行的結果要么是不等, 要么是 null,并且至少有一個 null,那么 in 的結果是 null。
3.not in expression not in (subquery)
右手邊是一個用圓括弧包圍的子查詢,它必須返回一個字段。左手邊表達式就子查詢結果的每一行進行計算和比較。如果只找到不相等的子查詢行(包括子查詢不返回行的特殊情況),那么not in 的結果是"真"。 如果找到任何相等行,則結果為"假"。 請注意如果左手邊表達式返回空,或者如果沒有等于右手邊的值,并且至少一個右手邊行生成空, 那么 not in 構造的結果將是空,而不是真。這是根據 sql 對布爾和空值組合的一般規則制定的。
和 exists 一樣,假設子查詢會完全結束是不明智的。 row_constructor not in (subquery)not in 的這種形式左手邊是一個行構造器,其右手邊是一個圓括弧括起來的子查詢, 它必須返回和左手邊表達式返回的行一樣多的字段。 左手邊表達式對子查詢的結果的每一行進行一次計算和比較。 如果只出現不等于子查詢行的情況,那么 not in 的結果就是"真"。 (包括子查詢沒有返回任何行的特殊例子)。如果找到相等行,那么結果是"假"。
和通常一樣,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則進行組合的。 如果兩個行對應的成員都是非空并且相等,那么認為這兩行相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果所有行的結果要么是不等, 要么是 null,并且至少有一個 null,那么 not in 的結果是 null。
4.any/someexpression operator any (subquery)
expression operator some (subquery)
這種形式的 any 右手邊是一個圓括弧括起來的子查詢, 它必須返回一個字段。左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。目前如果獲得任何真值結果,那么 any 的結果就是"真"。 如果沒有找到真值結果,那么結果是"假"(包括子查詢沒有返回任何行的特殊例子)。 some 是 any 的同意詞。 in 等效于 = any。
請注意如果沒有任何成功并且至少有一個右手邊行為該操作符結果生成 null, 那么 any 構造的結果將是null,而不是 false。 這個行為是遵照 sql 處理布爾和 null 值組合時的規則定的。
和 exists 一樣,假設子查詢將被完成運行完全是不明智的。 row_constructor operator any (subquery)
row_constructor operator some (subquery)
這種形式的左手邊是一個行構造器,右手邊是一個圓括弧括起來的子查詢, 它必須返回和左手邊列表給出的表達式一樣多的列。左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。 目前,系統只允許使用 = 或 <> 操作符處理逐行的 any 構造。 如果分別找到相等或者不相等的行,那么 any 的結果就是 "真"。如果沒有找到這樣的行,那么結果是"假"(包括子查詢沒有返回任何行的特殊例子)。
通常,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則進行組合的。 如果兩個行對應的成員都是非空并且相等,那么認為這兩行相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果至少有一個 null 行結果, 那么 any 的結果將是true 或者 null。
5.all expression operator all(subquery)
all 的這種形式的右手邊是一個圓括弧括起來的子查詢, 它必須只返回一列。左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。該操作符必須生成布爾結果.如果所有行的結果都為"真",(包括子查詢沒有返回任何行的特殊例子)。 那么 all 的結果就是"真"。如果沒有存在任何假值結果,那么結果是"假"。
not in 等效于 <> all。
請注意如果沒有運算失敗但是至少有一個右手邊行為該操作符的結果生成 null 值, 那么 all 構造的結果將是 null,而不是 true。 這個行為是遵照 sql 處理布爾和 null 值組合時的一般規則定的。
和 exists 一樣,假設子查詢將被完成運行完全是不明智的。
row_constructor operator all (subquery)
all 的這種形式的左手邊是一個行構造器,右手邊是一個圓括弧括起來的子查詢,它必須返回和左手邊行給出的表達式一樣多的字段。 左手邊表達式將使用給出的 operator對子查詢的結果的每一行進行一次計算和比較。 目前系統只允許使用 = 和 <> 操作符處理逐行的 all 查詢。 如果所有子查詢都是相等或者不相等的行,那么 all 的結果就是"真"。(包括子查詢沒有返回任何行的特殊例子)。 如果分別有任何不相等或者相等的行,那么結果是"假"。
通常,表達式或者子查詢行里的 null 是按照 sql 布爾表達式的一般規則 進行組合的。如果兩個行對應的成員都是非空并且相等,那么認為這兩行 相等;如果任意對應成員為非空且不等,那么該兩行不等; 否則這樣的行比較的結果是未知(null)。如果至少有一個 null 行結果, 那么 all 的結果就不可能是true;它將會是 false或者 null。
新聞熱點
疑難解答