COALESCE 函数
COALESCE 函数语法
COALESCE (argument_1, argument_2, …);
参数可以有无限个,总是返回第一个非空参数,如果所有参数都是null,则返回null。
COALESCE 函数从左到右开始评估每个参数,直到发现第一个非空参数,所有剩余参数被忽略不会被评估。标准SQL中对应的函数为 NVL 和 IFNULL ,mysql 为 ifnull 函数, oracle 为nvl 函数。
示例:
> SELECT COALESCE(1, 2); -- return 1
> SELECT COALESCE(NULL, 2 , 1); -- return 2
NULLIF 函数语法
NULLIF 函数是PostgreSQL提供的最常用的条件表达式之一,语法如下:
NULLIF(argument_1,argument_2);
如果两个参数相等返回null,否则返回第一个参数
示例:
> SELECT NULLIF (1, 1); -- return NULL
> SELECT NULLIF (1, 0); -- return 1
> SELECT NULLIF ('A', 'B'); -- return A
使用nullif函数防止除数为零
我们可以使用nullif函数将被除数置为null,再使用上面提到的coalesce函数实现返回结果
示例:
> SELECT COALESCE(1 / NULLIF(excerpt, 0), num);
首先,如果除数 excerpt 的值是 0,则 nullif 函数返回null,否则它返回 excerpt。 其次,如果 nullif 函数为 null 则 coalesce 函数的第一个参数返回null,从而结果返回 num。
总结
使用 nullif 函数检查 excerpt 值是否为 0,如果为 0 则返回 null,从而整个结果为 null,成功避免了除数为 0。
数学函数
函数返回类型描述例子结果random()double0.0到1.0之间的随机数值random()round(double/numeric)圆整为最接近的整数round(42.4)42round(v numeric, s int)numeric圆整为s位小数数字round(42.438,2)42.44decimal(a int, b int)a:指的是整数和小数所能存的最多的位数;b:指的是小数数字的位数,即a-b就是整数的位数
示例:
rond 函数
> SELECT round(1, 2); -- return 1
> SELECT round(1.2, 2); -- return 1.2
> SELECT round(1.5555, 2); -- return 1.56
> SELECT round(1.4444, 2); -- return 1.44
decimal 函数
> SELECT CAST(1 as decimal(10, 2)); -- return 1.00
> SELECT CAST(1.2 as decimal(10, 2)); -- return 1.20
> SELECT CAST(1.55555 as decimal(10, 2)); -- return 1.56
> SELECT CAST(1.44444 as decimal(10, 2)); -- return 1.44
发表评论