-
width_bucket(operand double precision, b1 double precision, b2 double precision, count int) 描述:设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。b1为分组范围的最小值,b2为分组范围的最大值,count为分组的个数。 返回值类型:integer 示例: 1
2
3
4
5 SELECT width_bucket(5.35, 0.024, 10.06, 5);
width_bucket
--------------
3
(1 row)
-
round(double precision or numeric) 描述:离输入参数最近的整数。 返回值类型:与输入相同。 示例: 1
2
3
4
5
6
7
8
9
10
11 SELECT round(42.4);
round
-------
42
(1 row)
SELECT round(42.6);
round
-------
43
(1 row)
当调用round函数时,数值类型将舍入零,而(在大多数计算机上) 实数和双精度型,以最接近的偶数为结果。
-
width_bucket(operand numeric, b1 numeric, b2 numeric, count int) 描述:设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。b1为分组范围的最小值,b2为分组范围的最大值,count为分组的个数。 返回值类型:integer 示例: 1
2
3
4
5 SELECT width_bucket(5.35, 0.024, 10.06, 5);
width_bucket
--------------
3
(1 row)
-
log(double precision or numeric) 描述:以10为底的对数。 ORA和TD兼容模式下,表现为以10为底的对数。 MySQL兼容模式下,表现为自然对数。 返回值类型:与输入相同。 示例: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 -- ORA兼容模式
SELECT log(100.0);
log
--------------------
2.0000000000000000
(1 row)
-- TD兼容模式
SELECT log(100.0);
log
--------------------
2.0000000000000000
(1 row)
-- MySQL兼容模式
SELECT log(100.0);
log
--------------------
4.6051701859880914
(1 row)
-
width_bucket(op numeric, b1 numeric, b2 numeric, count int) 描述:返回一个桶,这个桶是在一个有count个桶,上界为b1下界为b2的等深柱图中operand将被赋予的桶。 返回值类型:int 示例: 1
2
3
4
5 gaussdb=# SELECT width_bucket(5.35, 0.024, 10.06, 5);
width_bucket
--------------
3
(1 row)
-
width_bucket(op dp, b1 dp, b2 dp, count int) 描述:返回一个桶,这个桶是在一个有count个桶,上界为b1下界为b2的等深柱图中operand将被赋予的桶。 返回值类型:int 示例: 1
2
3
4
5 gaussdb=# SELECT width_bucket(5.35, 0.024, 10.06, 5);
width_bucket
--------------
3
(1 row)
-
sinh(x) 描述:双曲正弦。 返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。 示例: 1
2
3
4
5 gaussdb=# SELECT sinh(4);
sinh
------------------
27.2899171971277
(1 row)
此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
-
tanh(x) 描述:双曲正切。 返回值类型:与输入相同(double precision或者numeric类型)。 示例: 1
2
3
4
5 gaussdb=# SELECT tanh(0.1);
tanh
------------------------------------------
0.0996679946249558171183050836783521835389
(1 row)
此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
-
trunc(v numeric, s int) 描述:截断为s位小数。 返回值类型:numeric 示例: 1
2
3
4
5 gaussdb=# SELECT trunc(42.4382, 2);
trunc
-------
42.43
(1 row)
A兼容模式下,参数a_format_version值为10c和a_format_dev_version值为s1时,参数s若入参为小数则不会被四舍五入,而是被截断。
-
round(v numeric, s int) 描述:保留小数点后s位,s后一位进行四舍五入。 返回值类型:numeric 示例: 1
2
3
4
5 gaussdb=# SELECT round(42.4382, 2);
round
-------
42.44
(1 row)
控制参数s输入为小数时:在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下s截断为整数,否则s四舍五入为整数。 在参数a_format_version值为10c和a_format_dev_version值为s1的情况下,round函数支持round(timestamp, text)重载,在以(text, text)或(text, '')为入参调用round函数时会优先选择round(timestamp, text)。
-
power(a double precision, b double precision) 描述:a的b次幂。 返回值类型:double precision 示例: 1
2
3
4
5 gaussdb=# SELECT power(9.0, 3.0);
power
----------------------
729.0000000000000000
(1 row)
-
round(x) 描述:离输入参数最近的整数。 返回值类型:与输入相同(double precision或者numeric类型)。 示例: 1
2
3
4
5
6
7
8
9
10
11 gaussdb=# SELECT round(42.4);
round
-------
42
(1 row)
gaussdb=# SELECT round(42.6);
round
-------
43
(1 row)
float/double类型的输出结果可能会出现-0(trunc、ceil等函数同样会出现此种情形。在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下结果为0),例如: 1
2
3
4
5 gaussdb=# SELECT round(-0.2::float8);
round
-------
-0
(1 row)
-
remainder(x,y) 描述:x/y的余数,如果y是0,则报错。 返回值类型:与输入相同(float4、float8或者numeric类型) 示例: 1
2
3
4
5
6
7
8 gaussdb=# SELECT remainder(11,4);
remainder
----------
-1
(1 row)
gaussdb=# SELECT remainder(9,0);
ERROR: division by zero
CONTEXT: referenced column: remainder
此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
-
sqrt(x) 描述:平方根。 返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。 示例: 1
2
3
4
5 gaussdb=# SELECT sqrt(2.0);
sqrt
-------------------
1.414213562373095
(1 row)
此函数在GUC参数gs_format_behavior_compat_options值为'sqrt_karatsuba'时会使用Karatsuba sqrt平方根算法计算,否则使用牛顿迭代算法计算。Karatsuba sqrt平方根算法的性能更快,在极少数场景下精度和牛顿迭代算法有差别。
-
float8(in) 描述:将传入参数转换为float8类型值并返回。支持的入参类型包括:bigint、int16、integer、numeric、real、smallint、text。 返回值类型:float8 示例: 1
2
3
4
5
6
7
8
9
10
11 gaussdb=# SELECT float8('789');
float8
--------
789
(1 row)
gaussdb=# SELECT float8(99.9);
float8
--------
99.9
(1 row)