【TechTarget中国原创】问:前几天我阅读了一些有关在SELECT语句ORDER BY子句中用CASE表达式的一些指南。你能列举一些简单的例子解释一下吗?
答:在ORDER BY用CASE表达式是一种技巧,这种技巧能让我们在列表中的自然值自身不能满足任务时进行习惯性排序。我将列举出两个例子。
第一个例子所表达的情况就是当人力资源部想根据职位查看工资单的时候,首先要除开销售人员、其次就是IT职员、第三就是管理人员、最后是其他人,当然包括工资列表上的团队中的每个人。
CASE表达式用来将职位“转化”成值满足sort sequence的需求。
SELECT position , empno , salary FROM personnel ORDER BY CASE WHEN position = 'sales' THEN 1 WHEN position = 'it' THEN 2 WHEN position = 'mgmt' THEN 3 ELSE 4 END |
CASE表达式实际上在表中其他的列上创建了一个单独的附加列。CASE表达式还会更给每行计算附加列值。这个附加列还会对结果集进行排序,但是它并没有返回到不是结果集中(除非你在SELECT子句中还包括CASE表达式)。由于职位名称排序不正确,不是ASC也不是DESC或他们本身,所以我们还是需要CASE表达式。
第二个例子很相似:
ELECT position , empno , salary FROM personnel ORDER BY CASE WHEN position = 'sales' THEN 'Curly' WHEN position = 'it' THEN 'Larry' WHEN position = 'mgmt' THEN 'Moe' ELSE 'Shemp' END , salary DESC |
你能理解了吗?