| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| 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 週期在內部將它改寫成第二種形式.
要檢查一個值是否為 NULL,使用下面構造
expression IS NULL expression IS NOT NULL
或者等效,但並不標準的構造
expression ISNULL expression NOTNULL
不要 寫 expression = NULL 因為 NULL 是不"等于" NULL 的.(NULL 代表一個未知 的數值,因此我們無法知道兩個未知的數值是否相等.)
有些應用可能(不正確)地要求表達式 expression = NULL 在 expression 得出 NULL 值地時候返回真。 為了支持這種應用,我們可以打開運行時選項 transform_null_equals (也就是說 SET transform_null_equals TO ON;)。 這樣 PostgreSQL 將把 x = NULL 子句轉換成 x IS NULL。 在版本 6.5 到 7.1 之間,這是缺省的行為。
布爾數值可以用下面的構造進行測試
expression IS TRUE expression IS NOT TRUE expression IS FALSE expression IS NOT FALSE expression IS UNKNOWN expression IS NOT UNKNOWN
這些構造類似 IS NULL,因為它們將總是返回 TRUE 或者 FALSE,決不會返回 NULL,即時它們的操作數是 NULL 也一樣. NULL 輸入被當做邏輯數值"unknown"。