天天看點

openGauss 條件表達式函數介紹

作者:liwt

1、coalesce(expr1, expr2, …, exprn)

描述:傳回參數清單中第一個非NULL的參數值。

COALESCE(expr1, expr2) 等價于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。

示例:

openGauss=# SELECT coalesce(NULL,'hello');

coalesce

----------

hello

(1 row)

備注:

1)如果表達式清單中的所有表達式都等于NULL,則本函數傳回NULL。

2)它常用于在顯示資料時用預設值替換NULL。

3)和CASE表達式一樣,COALESCE不會計算不需要用來判斷結果的參數;即在第一個非空參數右邊的參數不會被計算。

2、decode(base_expr, compare1, value1, Compare2,value2, … default)

描述:把base_expr與後面的每個compare(n) 進行比較,如果比對傳回相應的value(n)。如果沒有發生比對,則傳回default。

示例:

openGauss=# SELECT decode('A','A',1,'B',2,0);

case

------

1

(1 row)

3、nullif(expr1, expr2)

描述:當且僅當expr1和expr2相等時,NULLIF才傳回NULL,否則它傳回expr1。

nullif(expr1, expr2) 邏輯上等價于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。

示例:

openGauss=# SELECT nullif('hello','world');

nullif

--------

hello

(1 row)

備注:

如果兩個參數的資料類型不同,則:

1)若兩種資料類型之間存在隐式轉換,則以其中優先級較高的資料類型為基準将另一個參數隐式轉換成該類型,轉換成功則進行計算,轉換失敗則傳回錯誤。如:

openGauss=# SELECT nullif('1234'::VARCHAR,123::INT4);

nullif

--------

1234

(1 row)

openGauss=# SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE);

ERROR: invalid input syntax for type timestamp: "1234"

2)若兩種資料類型之間不存在隐式轉換,則傳回錯誤 。如:

openGauss=# SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE);

ERROR: operator does not exist: boolean = timestamp without time zone

LINE 1: SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE) FROM sys_dummy;

^

HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

4、nvl( expr1 , expr2 )

描述:如果expr1為NULL,則傳回expr2。如果expr1非NULL,則傳回expr1。

示例:

openGauss=# SELECT nvl('hello','world');

nvl

-------

hello

(1 row)

備注:參數expr1和expr2可以為任意類型,當NVL的兩個參數不屬于同類型時,看第二個參數是否可以向第一個參數進行隐式轉換。如果可以則傳回第一個參數類型,否則傳回錯誤。

5、greatest(expr1 [, …])

描述:擷取并傳回參數清單中值最大的表達式的值。

傳回值類型:

示例:

openGauss=# SELECT greatest(1*2,2-3,4-1);

greatest

----------

3

(1 row)

""

openGauss=# SELECT greatest('HARRY', 'HARRIOT', 'HAROLD');

greatest

----------

HARRY

(1 row)

6、least(expr1 [, …])

描述:擷取并傳回參數清單中值最小的表達式的值。

示例:

openGauss=# SELECT least(1*2,2-3,4-1);

least

-------

-1

(1 row)

openGauss=# SELECT least('HARRY','HARRIOT','HAROLD');

least

--------

HAROLD

(1 row)

7、EMPTY_BLOB()

描述:使用EMPTY_BLOB在INSERT或UPDATE語句中初始化一個BLOB變量,取值為NULL。

傳回值類型:BLOB

示例:

--建立表

openGauss=# CREATE TABLE blob_tb(b blob,id int);

--插入資料

openGauss=# INSERT INTO blob_tb VALUES (empty_blob(),1);

--删除表

openGauss=# DROP TABLE blob_tb;

備注:使用DBE_LOB.GET_LENGTH求得的長度為0。

openGauss 條件表達式函數介紹

繼續閱讀