file:///P:/Oracle官方文档/11.2官方文档/server.112/e26088/functions030.htm#SQLRF00617
| Oracle® Database SQL Language Reference 11g Release 2 (11.2) E26088-03 |
|
COALESCE
Description of the illustration coalesce.gif
COALESCE returns the first non-null expr in the expression list. You must specify at least two expressions. If all occurrences ofexpr evaluate to null, then the function returns null.
Oracle Database uses short-circuit evaluation. The database evaluates eachexpr value and determines whether it is NULL, rather than evaluating all of theexpr values before determining whether any of them is NULL.
If all occurrences of expr are numeric data type or any nonnumeric data type that can be implicitly converted to a numeric data type, then Oracle Database determines the argument with the highest numeric precedence, implicitly converts the remaining arguments to that data type, and returns that data type.
See Also:
Table 3-10, "Implicit Type Conversion Matrix" for more information on implicit conversion and "Numeric Precedence" for information on numeric precedenceThis function is a generalization of the NVL function.
You can also use COALESCE as a variety of the CASE expression. For example,
COALESCE(expr1, expr2)
is equivalent to:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
Similarly,
COALESCE(expr1, expr2, ..., exprn)
where n >= 3, is equivalent to:
CASE WHEN expr1 IS NOT NULL THEN expr1
ELSE COALESCE (expr2, ..., exprn) END
The following example uses the sample oe.product_information table to organize a clearance sale of products. It gives a 10% discount to all products with a list price. If there is no list price, then the sale price is the minimum price. If there is no minimum price, then the sale price is "5":
SELECT product_id, list_price, min_price,
COALESCE(0.9*list_price, min_price, 5) "Sale"
FROM product_information
WHERE supplier_id = 102050
ORDER BY product_id;
PRODUCT_ID LIST_PRICE MIN_PRICE Sale
---------- ---------- ---------- ----------
1769 48 43.2
1770 73 73
2378 305 247 274.5
2382 850 731 765
3355 5
创建测试表
SQL> create table t1(
2 a varchar2(10),
3 b varchar2(10),
4 c varchar2(10),
5 d varchar2(10)
6 );
insert into t1(a,b,c,d) values('a1','b1','c1','d1');
insert into t1(b,c,d) values('b2','c2','d2');
insert into t1(c,d) values('c3','d3');
insert into t1(d) values('d4');
insert into t1(a,b,c,d) values(null,null,null,null);
insert into t1(a,b,c,d) values('a6','b6','c6','d6');
执行结果

本文深入解析 SQL COALESCE 函数的用途、语法和参数,并通过具体例子展示如何在产品销售场景中灵活运用此函数,实现根据不同条件组织数据。
930

被折叠的 条评论
为什么被折叠?



