COALESCE函数

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
示例二(该函数有合并的功能): 正常查询,得到下面结果: COALESCE函数_第1张图片
如果,我想得到这样的结果: ENAME
jiao,DAN,DAN,DAN,
可以这样写SQL语句: COALESCE函数_第2张图片
备注:本篇文章大多是转载的,期间加了一小部分自己的!

你可能感兴趣的:(SQL,SERVER,学习)