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() | double | 0.0到1.0之间的随机数值 | random() | |
round(double/numeric) | 圆整为最接近的整数 | round(42.4) | 42 | |
round(v numeric, s int) | numeric | 圆整为s位小数数字 | round(42.438,2) | 42.44 |
decimal(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
版权声明:本文为xiaohuihui1400原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。