条件表达式

相比于原始的openGauss,dolphin对于条件表达式的修改主要为:

  1. 新增IFNULL/IF表达式。
  • IFNULL

    等价于NVL,NVL的语法图请参见图7

    图 7 nvl::=

    如果value1为NULL则返回value2,如果value1非NULL,则返回value1。

    示例:

    openGauss=# SELECT ifnull(null,1);
    ifnull 
    -------
     1
    (1 row)
    
    openGauss=# SELECT ifnull ('Hello World' ,1);
       ifnull
    -------------
     Hello World
    (1 row)
    
  • IF

    仅支持IF(expr1,expr2,expr3),等价于CASE WHEN expr1 THEN expr2 ELSE expr3 END。

    CASE表达式的语法图请参考图1

    图 1 case::=

    CASE子句可以用于合法的表达式中。condition是一个返回BOOLEAN数据类型的表达式:

    • 如果结果为真,CASE表达式的结果就是符合该条件所对应的result。
    • 如果结果为假,则以相同方式处理随后的WHEN或ELSE子句。
    • 如果各WHEN condition都不为真,表达式的结果就是在ELSE子句执行的result。如果省略了ELSE子句且没有匹配的条件,结果为NULL。

    示例:

    openGauss=# CREATE TABLE case_when_t1(CW_COL1 INT);
    
    openGauss=# INSERT INTO case_when_t1 VALUES (1), (2), (3);
    
    openGauss=# SELECT * FROM case_when_t1;
    cw_col1 
    ---------
     1
     2
     3
    (3 rows)
    
    openGauss=# SELECT CW_COL1, IF(CW_COL1=1, 'one', 'other') FROM case_when_t1 ORDER BY 1;
     cw_col1 | case  
    ---------+-------
           1 | one
           2 | other
           3 | other
    (3 rows)
    
    openGauss=# DROP TABLE case_when_t1;
    
意见反馈
编组 3备份
    openGauss 2024-04-25 00:48:01
    取消