暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为openGauss 条件表达式函数

华为高斯 2020-06-01
1589

条件表达式函数

  • coalesce(expr1, expr2, ..., exprn)

    描述:

    返回参数列表中第一个非NULL的参数值。

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

    示例:

    ``` postgres=# 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。

    示例:

    ``` postgres=# 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。

    示例:

    ``` postgres=# SELECT nullif('hello','world'); nullif


    hello (1 row) ```

    备注:

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

    • 若两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如:

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


      1234 (1 row) ```

      postgres=# SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE); ERROR: invalid input syntax for type timestamp: "1234"

    • 若两种数据类型之间不存在隐式转换,则返回错误 。如:

      postgres=# 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.

  • nvl( expr1 , expr2 )

    描述:

    • 如果expr1为NULL则返回expr2。
    • 如果expr1非NULL,则返回expr1。

    示例:

    ``` postgres=# SELECT nvl('hello','world'); nvl


    hello (1 row) ```

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

  • sys_context( 'namespace' , 'parameter')

    描述:获取并返回指定namespace下参数parameter的值。

    返回值类型:VARCHAR

    示例:

    ``` postgres=# SELECT sys_context('USERENV', 'CURRENT_SCHEMA'); sys_context


    public (1 row) ```

    根据当前所在的实际schema而变化。

    备注:目前仅支持SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') 和SYS_CONTEXT('USERENV', 'CURRENT_USER')两种格式。

  • greatest(expr1 [, ...])

    描述:获取并返回参数列表中值最大的表达式的值。

    返回值类型:

    示例:

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


        3
    

    (1 row) ```

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


    HARRY (1 row) ```

  • least(expr1 [, ...])

    描述:获取并返回参数列表中值最小的表达式的值。

    示例:

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


    -1
    

    (1 row) ```

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


    HAROLD (1 row) ```

  • EMPTY_BLOB()

    描述:使用EMPTY_BLOB在INSERT或UPDATE语句中初始化一个BLOB变量,取值为NULL。

    返回值类型:BLOB

    示例:

    --新建表 postgres=# CREATE TABLE blob_tb(b blob,id int); --插入数据 postgres=# INSERT INTO date_tb VALUES (empty_blob(),1); --删除表 postgres=# DROP TABLE blob_tb;

    备注:使用DBMS.GETLENGTH求得的长度为0。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

文集目录
暂无数据