首页 > 其他分享 >openGauss 条件表达式函数介绍

openGauss 条件表达式函数介绍

时间:2022-11-08 12:36:26浏览次数:45  
标签:函数 expr2 expr1 表达式 openGauss NULL SELECT row

条件表达式函数:

  • 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)

备注:

  • 如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。
  • 它常用于在显示数据时用缺省值替换NULL。
  • 和CASE表达式一样,COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。
  • 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)
  • 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)

备注:

如果两个参数的数据类型不同,则:

  • 若两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如:
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"
  • 若两种数据类型之间不存在隐式转换,则返回错误 。如:
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.
  • nvl( expr1 , expr2 )
    描述:
    示例:
openGauss=# SELECT nvl('hello','world');
nvl
-------
hello
(1 row)

备注:参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换。如果可以则返回第一个参数类型,否则返回错误。

  • 如果expr1为NULL,则返回expr2。
  • 如果expr1非NULL,则返回expr1。
  • 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)
  • 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)
  • 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。

标签:函数,expr2,expr1,表达式,openGauss,NULL,SELECT,row
From: https://blog.51cto.com/u_13824494/5832538

相关文章

  • PYTHON SNIFF 嗅探Python Scapy-sniff函数
    sniff(count=0,store=1,offline=None,prn=None,filter=None,L2socket=None,timeout=None,opened_socket=None,stop_filt......
  • vlc-解码一个RTP数据包函数分析
    函数与解析解码RTP包主要完成的是从RTP包队列中取走一个RTP包,解析是否丢弃,并初始化时间戳,显示时间戳,负载类型,忽略字节等信息,更新包队列信息,并把解析后的该包传递给负载类型......
  • python Tips ----- 类型转换String、写入/追加文件、正则表达式字符、yield关键字
      类型转换String写入/追加文件 正则表达式字符  yield关键字  ......
  • .Net 7里的函数.Ctor和.CCtor是干啥用的呢?你知道吗
    楔子有小伙伴被面试官问到这个问题,本篇彻底解析下这个问题。为了彻底点,注意本篇是最底层的.Net7RCCLR运行模型(汇编)为基础进行全局剖析,局部业务分析。如有疏漏,请斧正......
  • 学习笔记-php代理审计_可能被利用的函数
    in_array()功能:检查数组中是否存在某个值。定义:in_array(mixed$needle,array$haystack,bool$strict=false):bool解释:大海捞针,在大海(ha......
  • MybatisPlus Lambda表达式 聚合查询 分组查询 COUNT SUM AVG MIN MAX GroupBy
    一、序言众所周知,MybatisPlus在处理单表DAO操作时非常的方便。在处理多表连接连接查询也有优雅的解决方案。今天分享MybatisPlus基于Lambda表达式优雅实现聚合分组查询。......
  • Hive 窗口函数
    窗口函数(开窗函数)函数说明OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化CURRENTROW:当前行nPRECEDING:往前n行数据nFOLLOWING:......
  • 验证用户名的正则表达式
    varreg=/^[0-9a-zA-Z\u4E00-\u9FA5\_]/;//验证中文、数字、字母、下划线正则^([\u4e00-\u9fa5]{1,20}|[a-zA-Z\.\s]{1,20})$1、不能有特殊字符和数字;2、可以输入......
  • SQL自定义函数
     存储函数和存储过程统称为存储例程(storeroutine),存储函数的限制比较多,例如不能用临时表,只能用表变量,而存储过程的限制较少,存储过程的实现功能要复杂些,而函数的......
  • 常用正则表达式
    Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?InternetURL:[a-zA-z]+://[^\s]*......