pgsql條件表示式

2021-06-22 08:42:05 字數 2419 閱讀 6991

postgresql 8.1 中文文件

prev

fast backward

chapter 9. 函式和操作符

fast forward

next

本節描述在 postgresql 裡可以用的sql相容的條件表示式。

sqlcase 表示式是一種通用的條件表示式,類似於其它語言中的 if/else 語句。

case when condition

then result

[when ...]

[else result

]end

case 子句可以用於任何表示式可以有效存在的地方。 condition

是乙個返回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

when value

then result

[when ...]

[else result

]end

先計算 expression

的值, 然後與所有在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(value

[, ...])

coalesce 返回它的第乙個非 null 的引數的值。 它常用於在為顯示目的檢索資料時用預設值替換 null 值。 比如:

select coalesce(description, short_description, '(none)') ...

和 case 表示式一樣,coalesce 將不會 計算不需要用來判斷結果的引數;也就是說,在第乙個非空引數右邊的引數不會被 計算。

nullif(value1

, value2

)

當且僅當 value1

和 value2

相等時,nullif 才返回 null。 否則它返回 value1

。 這些可以用於執行上面給出的 coalesce 例子的反例:

select nullif(value, '(none)') ...

greatest(value

[, ...])

least(value

[, ...])

greatest 和 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....