在SQL中,CASE语句是一种条件表达式,用于根据条件执行不同的操作。它有两种形式:简单CASE表达式和搜索CASE表达式。
简单CASE表达式的语法如下:
CASE expressionWHEN value1 THEN result1WHEN value2 THEN result2...ELSE result
END
其中,expression是要比较的值或表达式,value1、value2等是与expression进行比较的可能值,result1、result2等是与对应value匹配时返回的结果,ELSE部分是当expression与所有value都不匹配时返回的结果。
举个例子,假设有一个名为gender的字段,值为'M'、'F'或其他值,我们想要根据gender的值返回不同的结果:
SELECTgender,CASE genderWHEN 'M' THEN 'Male'WHEN 'F' THEN 'Female'ELSE 'Unknown'END AS gender_description
FROMemployees;
搜索CASE表达式的语法如下:
CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE result
END
其中,condition1、condition2等是要判断的条件,result1、result2等是与对应condition匹配时返回的结果,ELSE部分是当所有condition都不匹配时返回的结果。
举个例子,假设有一个名为salary的字段,我们想要根据salary的值返回不同的等级:
SELECTsalary,CASEWHEN salary >= 10000 THEN 'High'WHEN salary >= 5000 THEN 'Medium'ELSE 'Low'END AS salary_level
FROMemployees;
这样就可以根据不同的条件返回不同的结果。CASE语句在SQL中非常有用,可以用于条件判断、数据转换和结果分类等场景。
注意:在SQL中,CASE语句按顺序评估每个条件,并返回第一个满足条件的结果。如果有多个条件都满足,只会执行第一个满足条件的结果。
所以使用 case 可以避免同一条数据因为处理前后分别满足了不同的条件,从而导致一条数据被多次处理的情况。