首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL - CASE vs IF语句vs IF函数

MySQL - CASE vs IF语句vs IF函数
EN

Stack Overflow用户
提问于 2015-05-05 16:37:12
回答 1查看 23.4K关注 0票数 31

谁能解释一下CASE-statement、IF-statement和IF-function之间的区别?

在用法和“如何工作”方面有什么不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 05:02:38

From the manual,看起来if函数只是case表达式的一种不太灵活的形式。例如,您可以这样写:

代码语言:javascript
复制
select if(username = 'darxysaq', 'high', 'low') as awesomeness

case等效

代码语言:javascript
复制
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness

但是case更加灵活。它允许多个分支,例如:

代码语言:javascript
复制
select case 
       when username = 'darxysaq' then 'high' 
       when username = 'john skeet' then 'medium' 
       else 'low' 
       end as awesomeness

它可以像一个switch一样工作

代码语言:javascript
复制
select case username 
       when 'darxysaq' then 'high' 
       when 'john skeet' then 'medium' 
       else 'low' 
       end as awesomeness

现在,if语句完全不同了。它是一个control statement in MySQL procedures。语句表单如下所示:

代码语言:javascript
复制
CREATE FUNCTION GetAwesomeness (username varchar(50))
RETURNS varchar(20)
BEGIN
   IF username = 'darxysaq' THEN
      return 'high';
   ELSEIF username = 'john skeet' THEN
      return 'medium';
   ELSE
     return 'low';
   END IF;
END; //

Here's a SQL Fiddle with the statement version.看起来Bean先生并不像他想象的那样好!

最后要注意的是:case表达式是标准的SQL语句,适用于大多数数据库。if函数不是标准的SQL,在SQL Server或PostgreSQL等其他数据库中不起作用。

票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30047983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档