COALESCE函数会依次检查输入的参数,返回第一个不是NULL的参数,只有当传入COALESCE函数的所有的参数都是NULL的时候,函数才会返回NULL。例如, COALESCE(piName,''),如果变量piName为NULL,那么函数会返回'',否则就会返回piName本身的值。
由于这个函数是返回第一个非空的值,所以参数里面必须最少有一个非空的值,如果使用下面的查询,
SELECT COALESCE(NULL,NULL)
将会报错:
消息 4127,级别 16,状态 1,第 1 行
COALESCE 至少有一个参数必须为非 NULL 常量的表达式。
但是,如果传入的参数是某列,该列为空的话不会报错,如:COALESCE(piName,null),如果变量piName为NULL,那么函数会返回null,否则就会返回piName本身的值。
下面的例子给所有的产品按list_price打9折,如果没有list_price,就按最低价MIN_PRICE算。 如果也没有MIN_PRICE,那么sale就是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
- 示例二(该函数有合并的功能):
- 正常查询,得到下面结果:
- 如果,我想得到这样的结果:
- ENAME
jiao,DAN,DAN,DAN,
- 可以这样写SQL语句:
- 备注:本篇文章大多是转载的,期间加了一小部分自己的!