全部产品
云市场

条件判断函数

更新时间:2019-05-30 02:24:03

  • CASE
  • IF
  • IFNULL
  • NULLIF
    • 本文中的条件判断函数以conditiontest表为测试数据。

      1. create table conditiontest(a int) distributed by hash(a);
      1. insert into conditiontest values (1),(2),(3);
      1. SELECT * FROM conditiontest;
      2. +---+
      3. | a |
      4. +---+
      5. | 2 |
      6. | 1 |
      7. | 3 |

      CASE

      1. CASE expression
      2. WHEN value THEN result
      3. [ WHEN ... ]
      4. [ ELSE result ]
      5. END
      • 命令说明:简单CASE表达式会从左到右依次查找value,直到找到和expression相等的value,并返回对应的result结果;如果没有找到相等的value,则返回ELSE语句后的result结果。

      • 示例:

        1. SELECT a,
        2. CASE a
        3. WHEN 1 THEN 'one'
        4. WHEN 2 THEN 'two'
        5. ELSE 'three'
        6. END as caseresult
        7. FROM conditiontest;
        8. +---+------------+
        9. | a | caseresult |
        10. +---+------------+
        11. | 2 | two |
        12. | 1 | one |
        13. | 3 | three |
      1. CASE
      2. WHEN condition THEN result
      3. [ WHEN ... ]
      4. [ ELSE result ]
      5. END
      • 命令说明:高级CASE表达式会从左到右依次计算condition,直到第一个为TRUEcondition,并返回对应的result结果;如果没有找到为TRUEcondition,则返回ELSE语句后的result结果。

      • 示例:

        1. SELECT a,
        2. CASE a
        3. WHEN a=1 THEN 'one1'
        4. WHEN a=2 THEN 'two2'
        5. ELSE 'three3'
        6. END as caseresult
        7. FROM conditiontest;
        8. +---+------------+
        9. | a | caseresult |
        10. +---+------------+
        11. | 1 | one1 |
        12. | 3 | three3 |
        13. | 2 | three3 |

      IF

      1. if(condition, true_value)
      • 命令说明:如果conditiontrue,结果返回true_value;否则返回null

      • 示例:

        1. SELECT IF((2+3)>4,5);
        2. +-------+
        3. | _col0 |
        4. +-------+
        5. | 5 |
      1. if(condition, true_value, false_value)
      • 命令说明:如果conditiontrue,结果返回true_value;否则结果返回false_value

      • 示例:

        1. SELECT IF((2+3)<5,56);
        2. +-------+
        3. | _col0 |
        4. +-------+
        5. | 6 |

      IFNULL

      1. IFNULL(expr1,expr2)
      • 命令说明:如果expr1结果不为空,则返回expr1的值;否则返回expr2的值。

      • 示例:

        1. SELECT IFNULL(NULL,2);
        2. +-------+
        3. | _col0 |
        4. +-------+
        5. | 2 |
        6. SELECT IFNULL(1,0);
        7. +-------+
        8. | _col0 |
        9. +-------+
        10. | 1 |

      NULLIF

      1. NULLIF(expr1,expr2)
      • 命令说明:如果expr1expr2值相等,结果返回null;否则结果返回expr1的值。

      • 示例:

        1. SELECT NULLIF (2,1);
        2. +-------+
        3. | _col0 |
        4. +-------+
        5. | 2 |
        6. SELECT NULLIF (2,2);
        7. +-------+
        8. | _col0 |
        9. +-------+
        10. | NULL |