Dari manual
, sepertinya if
function hanyalah bentuk yang kurang fleksibel dari case
ekspresi. Misalnya, Anda dapat menulis:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
Dan yang setara dengan case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Tapi case
lebih fleksibel. Ini memungkinkan lebih dari satu cabang, seperti:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
Dan itu bisa bertindak seperti switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Sekarang if
pernyataan adalah binatang yang sama sekali berbeda. Ini adalah pernyataan kontrol dalam prosedur MySQL
. Bentuk pernyataan terlihat seperti:
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; //
Inilah SQL Fiddle dengan versi pernyataan. Sepertinya Mr Bean tidak seperti yang dia inginkan!
Catatan terakhir:case
ekspresi adalah SQL standar dan berfungsi di sebagian besar database. if
fungsi ini bukan SQL standar dan tidak akan berfungsi di database lain, seperti SQL Server atau PostgreSQL.