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

GaussDB SQL语法进阶—流控制函数

流控制函数

CASE

  • 语法格式
-- 格式1 CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END -- 格式2 CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
  • 当compare_value/conditon被满足时,返回对应的reslut,否则返回ELSE语句后的reslut,如果没有ELSE语句,则返回NULL;

  • case表达式的返回类型是所有返回值的兼容聚合类型,而且取决于使用它的上下文。如果在上下文中使用字符串,结果将返回为字符串。如果在上下文中使用数字,结果返回为十进制、实数或整数值;

  • 示例

SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END; -- one SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END; -- true SELECT CASE BINARY 'B' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END; --

IF

  • 语法格式
IF(expr1,expr2,expr3)
  • 当expr1为true(expr1<>0 并且 expr1<>NULL),if()返回结果为expr2,否则返回expr3;

  • IF()返回的结果是数据类型还是字符串类型,取决于具体的使用场景

    • 如果expr2或expr3中只有一个为NULL,那么IF()函数的结果类型为不是NULL的那一个表达式的结果类型;
    • 如果expr2或expr3的结果为string的类型,那么IF()函数的返回结果为string;
    • 如果expr2或expr3的结果为浮点型,那么IF()函数的返回结果为浮点型;
    • 如果expr2或expr3的结果为整型,那么IF()函数的返回结果为整型;
  • 示例

SELECT IF(1>2,2,3); -- 3 SELECT IF(1<2,'yes','no'); -- yes SELECT IF(STRCMP('test','test1'),'no','yes'); -- no -- strcmp函数用于比较两个字符串并根据比较结果返回整数;

IFNULL

  • 语法格式
IFNULL(expr1,expr2)
  • 如果expr1不是NULL,则结果返回expr1,否则返回expr2;
  • 示例
SELECT IFNULL(1,0); -- 1 SELECT IFNULL(NULL,10); -- 10 SELECT IFNULL(1/0,'yes'); -- yes

NULLIF

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

文章被以下合辑收录

评论