postgresql中可用的sql相容的條件表示式。
如果你的需求超過這些條件表示式的能力,你可能會希望用一種更富表現力的程式語言寫乙個儲存過程。
sql case表示式是一種通用的條件表示式,類似於其它程式語言中的 if/else 語句:
case when condition then result
[when …]
[else result]
endcase子句可以用於任何表示式可以出現的地方。每乙個condition是乙個返回boolean結果的表示式。如果結果為真,那麼case表示式的結果就是符合條件的result,並且剩下的case表示式不會被處理。如果條件的結果不為真,那麼以相同方式搜尋任何隨後的when子句。如果沒有when condition為真,那麼case表示式的值就是在else子句裡的result。如果省略了else子句而且沒有條件為真,結果為空。
-- example:
postgres=# select * from t_1 order
by1, 2;
num | name
-----+------
1 | a
2 | b
3 | c
4 | a
(4 rows)
postgres=# select num,
postgres-# case num when
1then
'one'
postgres-# when
2then
'two'
postgres-# when
3then
'three'
postgres-# else
'other'
postgres-# end
postgres-# from t_1
postgres-# order
by1, 2;
num | case
-----+-------
1 | one
2 | two
3 | three
4 | other
(4 rows)
所有result表示式的資料型別都必須可以轉換成單一的輸出型別。
coalesce(value [, …])
coalesce函式返回它的第乙個非空引數的值。當且僅當所有引數都為空時才會返回空。它常用於在為顯示目的檢索資料時用預設值替換空值。
--example
postgres=# select coalesce(null, null, num) from t_1 order
by1;
coalesce
----------12
34
(4 rows)
和case表示式一樣,coalesce將不會 計算無助於判斷結果的引數;也就是說,在第乙個非空引數右邊的引數不會被計算。這個 sql 標準函式提供了類似於nvl和ifnull的能力,它們被用在某些其他資料庫系統中。
nullif(value1, value2)
當value1和value2相等時,nullif返回乙個空值。 否則它返回value1。 這些可以用於執行前文給出的coalesce例子的逆操作:
postgres=# select nullif(num::text, name) from t_1 order
by1;
nullif
--------
1 23 4
(4 rows)
greatest(value [, …])
least(value [, …])
greatest和least函式從乙個任意的數字表示式列表裡選取最大或者最小的數值。 這些表示式必須都可以轉換成乙個普通的資料型別,它將會是結果型別 。列表中的 null 數值將被忽略。只有所有表示式的結果都是 null 的時候,結果才會是 null。
請注意greatest和least都不是 sql 標準,但卻是很常見的擴充套件。某些其他資料庫讓它們在任何引數為 null 時返回 null,而不是在所有引數都為 null 時才返回 null。
pgsql條件表示式
postgresql 8.1 中文文件 prev fast backward chapter 9.函式和操作符 fast forward next 本節描述在 postgresql 裡可以用的sql相容的條件表示式。sqlcase 表示式是一種通用的條件表示式,類似於其它語言中的 if else 語...
簡化條件表示式
1.分解條件表示式 if isup case isleft case num a b else num a c 更改為 if istrue case numberb a else numberc a boolean istrue case int numberb a int numberc a 2....
條件表示式詳解
三目運算子為a?b c 即有三個參與運算的量。由條件運算子組成條件表示式的一般形式為 表示式1?表示式2 表示式3 其求值規則為 如果表示式1的值為真,則以表示式2 的值作為條件表示式的值,否則以表示式2的值作為整個條件表示式的值。條件表示式通常用於賦值語句之中。例如條件語句 if a b max ...