查找型case表达式
CASE
WHEN C1 THEN E1
WHEN C2 THEN E2
…
WHEN CN THEN EN
[ELSE ED]
END
在上面的定义中,符号C1、C2、…、CN代表条件,E1、E2、…、EN代表case表达式返回的表达式。如果when子句中条件为
真,那么case表达式返回相应的表达式。另外,符号ED代表默认表达式,也就是case表达式在条件C1、C2、…CN中没有一个
为真时将返回表达式(else子句是可选的,这就是为什么要用方括号把它括起来)。各种各样的when子句返回的所有表达式
的计算结果必须类型相同(如日期型、数字型、变长字符串型等)。
下面是一个查找型case表达式范例:
CASE
WHEN employee.title=‘Head Teller’
THEN ‘Head Teller’
WHEN employee.title=‘Teller’
AND YEAR(employee.start_date)>2007
THEN ‘Teller Trainee’
WHEN employee.title=‘Teller’
AND YEAR(employee.start_date)<2006
THEN ‘Experienced Teller’
WHEN employee.title = ‘Teller’
THEN ‘Teller’
ELSE ‘Non-Teller’
END
简单的case表达式
CASE V0
WHEN V1 THEN E1
WHEN V2 THEN E2
…
WHEN VN THEN EN
[ELSE ED]
END
在前面的定义中,V0代表一个值,符号V1、V2、…、VN代表要与V0比较的值,符号E1、E2、…、EN代表case表达式要返回
的表达式,ED代表V1、V2、…、VN没有一个值匹配V0时返回的默认值。
CASE customer.cust_type_cd
WHEN ‘I’ THEN
(SELECT CONCAT(i.fname,’’,i.lname) from individual I WHERE i.cust_id = customer.cust_id)
WHEN ‘B’ THEN
(SELECT b.name from business b where b.cust_id = customer.cust_id)
ELSE ‘Unknow Customer Type’
END