postgresql 8.1 中文文件
prev
fast backward
chapter 9. 函式和操作符
fast forward
next
本節描述在 postgresql 裡可以用的sql相容的條件表示式。
sqlcase 表示式是一種通用的條件表示式,類似於其它語言中的 if/else 語句。
case when conditioncase 子句可以用於任何表示式可以有效存在的地方。 conditionthen result
[when ...]
[else result
]end
是乙個返回boolean 的表示式。 如果結果為真,那麼 case 表示式的結果就是符合條件的 result
。 如果結果為假,那麼以相同方式搜尋任何隨後的 when 子句。 如果沒有 when
condition
為真,那麼 case 表示式的結果就是在 else 子句裡的值。 如果省略了 else 子句而且沒有匹配的條件, 結果為 null。
例子:
select * from test;a---
1 23select a,
case when a=1 then 'one'
when a=2 then 'two'
else 'other'
endfrom test;
a | case
---+-------
1 | one
2 | two
3 | other
所有 result
表示式的資料的型別都必須可以轉換成單一的輸出型別。 參閱 section 10.5 獲取細節。
下面這個"簡單的"
case 表示式是上面的通用形式的乙個特殊的變種。
case expression先計算 expressionwhen value
then result
[when ...]
[else result
]end
的值, 然後與所有在when 子句裡宣告的 value
對比,直到找到乙個相等的。 如果沒有找到匹配的,則返回在 else 子句裡的 result
(或者 null)。 這個類似於 c 裡的 switch 語句。
上面的例子可以用簡單 case 語法來寫:
select a,case a when 1 then 'one'
when 2 then 'two'
else 'other'
endfrom test;
a | case
---+-------
1 | one
2 | two
3 | other
case 表示式並不計算任何對於判斷結果並不需要的子表示式。 比如,下面是乙個可以避免被零除的方法:
select ... where case when x <> 0 then y/x > 1.5 else false end;
coalesce(valuecoalesce 返回它的第乙個非 null 的引數的值。 它常用於在為顯示目的檢索資料時用預設值替換 null 值。 比如:[, ...])
select coalesce(description, short_description, '(none)') ...
和 case 表示式一樣,coalesce 將不會 計算不需要用來判斷結果的引數;也就是說,在第乙個非空引數右邊的引數不會被 計算。
nullif(value1當且僅當 value1, value2
)
和 value2
相等時,nullif 才返回 null。 否則它返回 value1
。 這些可以用於執行上面給出的 coalesce 例子的反例:
select nullif(value, '(none)') ...
greatest(value[, ...])
least(valuegreatest 和 least 函式從乙個任意的數字表示式列表裡選取最大或者最小的數值。 這些表示式必須都可以轉換成乙個普通的資料型別,它將會是結果型別 (參閱 section 10.5 獲取細節)。 列表中的 null 數值將被忽略。只有所有表示式的結果都是 null 的時候,結果才會是 null。[, ...])
請注意 greatest 和 least 都不是 sql 標準,但卻是很常見的擴充套件。
prev
home
next
序列操作函式
up陣列函式和操作符
pgsql子查詢表示式
postgresql 8.1 中文文件 prev fast backward chapter 9.函式和操作符 fast forward next 本節描述 postgresql 裡面能用的 sql 相容的子查詢表示式。所有本節中成文的表示式都返回布林值 真 假 結果。exists subquery...
Postgresql 條件表示式
postgresql中可用的sql相容的條件表示式。如果你的需求超過這些條件表示式的能力,你可能會希望用一種更富表現力的程式語言寫乙個儲存過程。sql case表示式是一種通用的條件表示式,類似於其它程式語言中的 if else 語句 case when condition then result ...
簡化條件表示式
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....