| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 9. 函數和操作符 | Fast Forward | Next |
可用的比較操作符在 Table 9-1 顯示。
注意: != 操作符在分析器階段被轉換成 <>。把 != 和 <> 操作符實現為做不同的事是不可能的。
比較操作符可以用於所有可以比較的資料類型。 所有比較操作符都是雙目操作符,返回 boolean 類型數值; 象1 < 2 < 3 這樣的資料表達式是非法的 (因為沒有什麼 < 操作符用於 在布爾值和3之間做比較)。
a BETWEEN x AND y
等效於
a >= x AND a <= y
類似的還有
a NOT BETWEEN x AND y
等效於
a < x OR a > y
這兩種形式之間沒有甚麼區別,只不過第一種形式需要一些 CPU 週期在內部將它改寫成第二種形式。
expression IS NULL expression IS NOT NULL
或者等效,但並不標準的構造
expression ISNULL expression NOTNULL
不要 寫 expression = NULL 因為 NULL 是不"等於" NULL 的。(NULL 代資料表一個未知的數值,因此我們無法知道兩個未知的數值是否相等。) 這個行為遵循 SQL 標準。
提示: 有些應用可能要求資料表達式 expression = NULL 在 expression 得出 NULL 值地時候返回真。 我們強烈建議這樣的應用修改成遵循 SQL 標準。但是,如果這樣修改是不可能的,那麼我們可以使用配置變量 transform_null_equals。 如果打開它, PostgreSQL 將把 x = NULL 子句轉換成 x IS NULL。 在 PostgreSQL 版本 6.5 到 7.1 之間,這是預設的行為。
如果有任何一個輸入是空,那麼普通的比較操作符生成空(資料表示"未知")。 另外一個比較的方法是用 IS DISTINCT FROM 構造:
expression IS DISTINCT FROM expression
對於非空輸入,這個與 <> 操作符相同。 但是,假如兩個輸入都是空,那麼它將返回假,而如果只有一個輸入是空,那麼它將返回真。 這樣就很有效地把空當作一個普通地資料值看待,而不是"未知"。
expression IS TRUE expression IS NOT TRUE expression IS FALSE expression IS NOT FALSE expression IS UNKNOWN expression IS NOT UNKNOWN
這些構造將總是返回真或假,從來不返回空值,即使操作數是空也如此。 空值輸入被當做邏輯數值"未知"。 請注意實際上 IS UNKNOWN 和 IS NOT UNKNOWN 分別與 IS NULL 和 IS NOT NULL 相同, 只是輸入資料表達式必須是布爾類型。