首页 > 数据库 > > 函数和操作符-条件表达式函数
描述:
返回参数列表中第一个非NULL的参数值。
COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。
示例:
SELECT coalesce(NULL,'hello');
coalesce
----------
hello
(1 row)
备注:
描述:把base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。
示例:
SELECT decode('A','A',1,'B',2,);
case
------
1
(1 row)
描述:
当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。
nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。
示例:
SELECT nullif('hello','world');
nullif
--------
hello
(1 row)
备注:
如果两个参数的数据类型不同,则:
SELECT nullif('1234'::VARCHAR,123::INT4);
nullif
--------
1234
(1 row)
SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE);
ERROR: invalid input syntax for type timestamp: "1234"
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 DUAL;
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
描述:
示例:
SELECT nvl('hello','world');
nvl
-------
hello
(1 row)
备注:参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换,如果可以则返回第一个参数类型。如果第二个参数不能向第一个参数进行隐式转换而第一个参数可以向第二个参数进行隐式转换,则返回第二个参数的类型。如果两个参数之间不存在隐式类型转换并且也不属于同一类型则报错。
描述:获取并返回指定namespace下参数parameter的值。
返回值类型:VARCHAR
示例:
SELECT sys_context('USERENV', 'CURRENT_SCHEMA');
sys_context
-------------
public
(1 row)
根据当前所在的实际schema而变化。
备注:目前仅支持SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') 和SYS_CONTEXT('USERENV', 'CURRENT_USER')两种格式。
描述:获取并返回参数列表中值最大的表达式的值。
返回值类型:
示例:
SELECT greatest(1*2,2-3,4-1);
greatest
----------
3
(1 row)
SELECT greatest('HARRY', 'HARRIOT', 'HAROLD');
greatest
----------
HARRY
(1 row)
描述:获取并返回参数列表中值最小的表达式的值。
示例:
SELECT least(1*2,2-3,4-1);
least
-------
-1
(1 row)
SELECT least('HARRY','HARRIOT','HAROLD');
least
--------
HAROLD
(1 row)
描述:使用EMPTY_BLOB在INSERT或UPDATE语句中初始化一个BLOB变量,取值为NULL。
返回值类型:BLOB
示例:
--新建表
CREATE TABLE blob_tb(b blob,id int) DISTRIBUTE BY REPLICATION;
--插入数据
INSERT INTO date_type_blob VALUES (empty_blob(),1);
--删除表
DROP TAB blob_tb;
备注:使用DBMS.GETLENGTH求得的长度为0。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3137657/ ,如需转载,请注明出处,否则将追究法律责任。