MySQL——case語(yǔ)句
case語(yǔ)句
第一種表達(dá)方式:
語(yǔ)法格式為:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
說(shuō)明:一個(gè)CASE語(yǔ)句經(jīng)常可以充當(dāng)一個(gè)IF-THEN-ELSE語(yǔ)句。
第一種格式中case_value是要被判斷的值或表達(dá)式,接下來(lái)是一系列的WHEN-THEN塊,每一塊的when_value參數(shù)指定要與case_value比較的值,如果為真,就執(zhí)行statement_list中的SQL語(yǔ)句。如果前面的每一個(gè)塊都不匹配就會(huì)執(zhí)行ELSE塊指定的語(yǔ)句。CASE語(yǔ)句最后以END CASE結(jié)束。
例如
創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,當(dāng)參數(shù)值為M,返回結(jié)果為“男”,當(dāng)參數(shù)值為F,返回結(jié)果為“女” 。
DELIMITER $$
CREATE PROCEDURE XSCJ.RESULT
(IN str VARCHAR(4), OUT sex VARCHAR(4) )
BEGIN
CASE str
WHEN 'M' THEN SET sex='男';
WHEN 'F' THEN SET sex='女';
ELSE SET sex='無(wú)';
END CASE;
END$$
DELIMITER ;
第二種表達(dá)方式:相比第一種表達(dá)方式,case后面沒(méi)有參數(shù),這種格式能夠?qū)崿F(xiàn)更為復(fù)雜的條件判斷,使用起來(lái)更方便
用第二種格式的CASE語(yǔ)句創(chuàng)建以上存儲(chǔ)過(guò)程。程序片段如下:
CREATE PROCEDURE XSCJ.RESULT
(IN str VARCHAR(4), OUT sex VARCHAR(4) )
BEGIN
CASE
WHEN str='M' THEN SET sex='男';
WHEN str='F' THEN SET sex='女';
ELSE SET sex='無(wú)';
END CASE;
END$$
點(diǎn)擊加載更多評(píng)論>>