条件函数

Hologres兼容PostgreSQL,支持使用标准的PostgreSQL语法进行开发,当前Hologres版本支持的函数是PostgreSQL的一个子集。本文为您介绍Hologres已支持的条件函数列表及使用用例。

函数

功能

CASE

在指定的条件表达式为TRUE时执行一组单个或多个语句。

COALESCE

返回参数列表中第一个非空表达式的值。

GREATEST

选择表达式列表中的最大值。

IF

根据判断条件选择执行的语句。

说明

仅Hologres V2.1版本起支持IF函数。如果您的实例版本为V2.0及以下版本,请先升级实例版本,详情请参见实例升级

LEAST

选择表达式列表中的最小值。

NULLIF

判断两个表达式的值是否相等,如果相等,则结果返回NULL,反之返回第一个表达式的值。

示例数据

CASENULLIFGREATESTLEAST函数相关的示例均基于test示例数据。以下是创建表test并添加数据的命令示例。

CREATE TABLE test (
    a INT
);
INSERT INTO test (a) VALUES (1);
INSERT INTO test (a) VALUES (2);
INSERT INTO test (a) VALUES (3);

CASE

  • 描述:在指定的条件表达式为TRUE时执行一组单个或多个语句。

  • 示例

    SELECT a,
      CASE WHEN a=1 THEN 'one'            
           WHEN a=2 THEN 'two'            
           ELSE 'other'       
      END    
    FROM test;

    返回结果如下。

    a    case
    ----+-----------
    1    one
    2    two
    3    other

IF

仅Hologres V2.1版本起支持IF函数。如果您的实例版本为V2.0及以下版本,请先升级实例版本,详情请参见实例升级

  • 描述:根据判断条件选择执行的语句。

    IF(condition, value_if_true, value_if_false)

    condition:判断条件,如果判断条件的结果为TRUE,返回第二个参数。如果判断条件的结果为FALSE或为NULL,返回第三个参数。

  • 示例

    DROP TABLE IF EXISTS if_test;
    CREATE TABLE if_test (
        id int,
        name text,
        age int
    );
    
    INSERT INTO if_test VALUES ('1', 'a', '18'), ('2', 'b', '19'), ('3', 'c', '25'), ('4', 'd', '8'), ('5', 'e', '27'), ('6', 'f', '21');
    
    SELECT
        name,
        IF (age >= 18, '成年', '未成年')
    FROM
        if_test;

    返回结果如下。

    +-------+---------+
    | name  | if      |
    +-------+---------+
    | a     |  成年   |
    | c     |  成年   |
    | e     |  成年   |
    | f     |  成年   |
    | d     |  未成年 |
    | b     |  成年   |

COALESCE

  • 描述:返回参数列表中第一个非空表达式的值。

    说明

    当所有表达式为NULL时,结果返回NULL。

  • 示例

    --返回结果:1
    SELECT COALESCE(1,2);
    
    --返回结果:2
    select COALESCE(NULL,2,1);
    
    --返回结果:0
    select COALESCE(NULL,0);

NULLIF

  • 描述:判断两个表达式的值是否相等,如果相等,则结果返回NULL,反之返回第一个表达式的值。

  • 示例

    SELECT a,       
          NULLIF('a','a')    
    FROM test;

    返回结果如下。

    a    nullif
    ----+-----------
    1    
    2    
    3    

GREATEST

  • 描述:选择表达式列表中的最大值。

  • 示例

    SELECT a,       
          GREATEST('a','b','c')    
    FROM test;

    返回结果如下。

    a    greatest
    ----+-----------
    1    c
    2    c
    3    c

LEAST

  • 描述:选择表达式列表中的最小值。

  • 示例

    SELECT a,       
          LEAST('a','b','c')    
    FROM test;

    返回结果如下。

    a    least
    ----+-----------
    1    a
    2    a
    3    a

相关文档

PostgreSQL的条件函数的使用方法,详情请参见条件函数