And*_*mar 30
从手册中看,if函数只是case表达式的一种不太灵活的形式.例如,你可以写:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
Run Code Online (Sandbox Code Playgroud)
相当于case:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Run Code Online (Sandbox Code Playgroud)
但case更灵活.它允许多个分支,例如:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
Run Code Online (Sandbox Code Playgroud)
它可以表现得像switch:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Run Code Online (Sandbox Code Playgroud)
现在if声明是一个完全不同的野兽.它是MySQL程序中的控制语句.声明表格如下:
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; //
Run Code Online (Sandbox Code Playgroud)
这是一个声明版本的SQL小提琴. 看起来憨豆先生并不是他所做的全部!
最后一点:case表达式是标准SQL,适用于大多数数据库.该if函数不是标准SQL,不适用于其他数据库,如SQL Server或PostgreSQL.
| 归档时间: |
|
| 查看次数: |
14779 次 |
| 最近记录: |