流控制函数
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




