国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Postgresql 條件表達(dá)式

2019-11-08 20:30:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

條件表達(dá)式

PostgreSQL中可用的SQL兼容的條件表達(dá)式。

如果你的需求超過(guò)這些條件表達(dá)式的能力,你可能會(huì)希望用一種更富表現(xiàn)力的編程語(yǔ)言寫一個(gè)存儲(chǔ)過(guò)程

CASE

SQL CASE表達(dá)式是一種通用的條件表達(dá)式,類似于其它編程語(yǔ)言中的 if/else 語(yǔ)句:

CASE WHEN condition THEN result [WHEN …] [ELSE result] END

CASE子句可以用于任何表達(dá)式可以出現(xiàn)的地方。每一個(gè)condition是一個(gè)返回boolean結(jié)果的表達(dá)式。如果結(jié)果為真,那么CASE表達(dá)式的結(jié)果就是符合條件的result,并且剩下的CASE表達(dá)式不會(huì)被處理。如果條件的結(jié)果不為真,那么以相同方式搜尋任何隨后的WHEN子句。如果沒(méi)有WHEN condition為真,那么CASE表達(dá)式的值就是在ELSE子句里的result。如果省略了ELSE子句而且沒(méi)有條件為真,結(jié)果為空。

-- Example:postgres=# SELECT * FROM t_1 ORDER BY 1, 2; num | name -----+------ 1 | a 2 | b 3 | c 4 | a(4 rows)postgres=# SELECT num,postgres-# CASE num WHEN 1 THEN 'one'postgres-# WHEN 2 THEN 'two'postgres-# WHEN 3 THEN 'three'postgres-# ELSE 'other'postgres-# END postgres-# FROM t_1 postgres-# ORDER BY 1, 2; num | case -----+------- 1 | one 2 | two 3 | three 4 | other(4 rows)

所有result表達(dá)式的數(shù)據(jù)類型都必須可以轉(zhuǎn)換成單一的輸出類型。

COALESCE

COALESCE(value [, …]) COALESCE函數(shù)返回它的第一個(gè)非空參數(shù)的值。當(dāng)且僅當(dāng)所有參數(shù)都為空時(shí)才會(huì)返回空。它常用于在為顯示目的檢索數(shù)據(jù)時(shí)用缺省值替換空值。

--Examplepostgres=# SELECT coalesce(NULL, NULL, num) FROM t_1 order by 1; coalesce ---------- 1 2 3 4(4 rows)

和CASE表達(dá)式一樣,COALESCE將不會(huì) 計(jì)算無(wú)助于判斷結(jié)果的參數(shù);也就是說(shuō),在第一個(gè)非空參數(shù)右邊的參數(shù)不會(huì)被計(jì)算。這個(gè) SQL 標(biāo)準(zhǔn)函數(shù)提供了類似于NVL和IFNULL的能力,它們被用在某些其他數(shù)據(jù)庫(kù)系統(tǒng)中。

NULLIF

NULLIF(value1, value2) 當(dāng)value1和value2相等時(shí),NULLIF返回一個(gè)空值。 否則它返回value1。 這些可以用于執(zhí)行前文給出的COALESCE例子的逆操作:

postgres=# SELECT nullif(num::text, name) FROM t_1 order by 1; nullif -------- 1 2 3 4(4 rows)

GREATEST和LEAST

GREATEST(value [, …]) LEAST(value [, …]) GREATEST和LEAST函數(shù)從一個(gè)任意的數(shù)字表達(dá)式列表里選取最大或者最小的數(shù)值。 這些表達(dá)式必須都可以轉(zhuǎn)換成一個(gè)普通的數(shù)據(jù)類型,它將會(huì)是結(jié)果類型 。列表中的 NULL 數(shù)值將被忽略。只有所有表達(dá)式的結(jié)果都是 NULL 的時(shí)候,結(jié)果才會(huì)是 NULL。

請(qǐng)注意GREATEST和LEAST都不是 SQL 標(biāo)準(zhǔn),但卻是很常見(jiàn)的擴(kuò)展。某些其他數(shù)據(jù)庫(kù)讓它們?cè)谌魏螀?shù)為 NULL 時(shí)返回 NULL,而不是在所有參數(shù)都為 NULL 時(shí)才返回 NULL。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 柳林县| 玉树县| 乐至县| 铅山县| 黄龙县| 宁乡县| 灵石县| 新河县| 嫩江县| 昌江| 兴宁市| 怀远县| 绿春县| 桑植县| 垣曲县| 富顺县| 仙游县| 定结县| 漳平市| 绩溪县| 永新县| 广丰县| 靖江市| 丰城市| 枣阳市| 阳春市| 金山区| 女性| 叶城县| 柳州市| 河间市| 镇雄县| 黄平县| 潜山县| 昭觉县| 正定县| 鹤岗市| 延吉市| 贵港市| 宜城市| 任丘市|