在Oracle世界,你可以使用:1)case表达式 或者2)decode函数来实现逻辑判断。Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能。而CASE是9i以后提供的语法,这个语法更加的灵活,提供了IF THEN ELSE的功能。case表达式case表达式,可分两种,简单和搜索,简单case后接表达式,如:对于简单的case需要几点注意:1)寻找when的优先级:从上到下2)再多的when,也只有一个出口,即其中有一个满足了expr就马上退出case3)不能把return_expr和else_expr指定为null,而且,expr、comparison_expr和return_expr的数据类型必须相同。搜索case:CASE WHEN condition THEN return_expr[WHEN condition THEN return_expr]...ELSE else_exprEND例子:
SELECT (CASE WHEN cust_credit_limit BETWEEN 0 AND 3999 THEN " 0 - 3999"
WHEN cust_credit_limit BETWEEN 4000 AND 7999 THEN " 4000 - 7999"
WHEN cust_credit_limit BETWEEN 8000 AND 11999 THEN " 8000 - 11999"
WHEN cust_credit_limit BETWEEN 12000 AND 16000 THEN "12000 - 16000" END)
AS BUCKET, COUNT(*) AS Count_in_Group
FROM customers WHERE cust_city = "Marshal" GROUPBY
(CASE WHEN cust_credit_limit BETWEEN 0 AND 3999 THEN " 0 - 3999"
WHEN cust_credit_limit BETWEEN 4000 AND 7999 THEN " 4000 - 7999"
WHEN cust_credit_limit BETWEEN 8000 AND 11999 THEN " 8000 - 11999"
WHEN cust_credit_limit BETWEEN 12000 AND 16000 THEN "12000 - 16000" END);