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

查看原文