更新时间:2026-02-26 GMT+08:00

数学函数

abs(x)

描述:计算x的绝对值。

输入参数x支持bigint、double precision、integer、numeric、real或smallint类型。

返回值类型:和输入相同。

示例:

1
2
3
4
5
SELECT abs(-17.4);
 abs
------
 17.4
(1 row)

acos(x)

描述:计算x的反余弦。

输入参数为double precision类型。取值范围为[-1,1]。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT acos(-1);
       acos       
------------------
 3.14159265358979
(1 row)

asin(x)

描述:计算x的反正弦。

输入参数为double precision类型。取值范围为[-1,1]。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT asin(0.5);
       asin       
------------------
 0.523598775598299
(1 row)

atan(x)

描述:计算x反正切函数。

输入参数为double precision类型。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT atan(1);
       atan       
------------------
 0.785398163397448
(1 row)

atan2(y, x)

描述:计算y/x的反正切函数。

输入参数为double precision类型。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT atan2(2, 1);
      atan2
------------------
 1.10714871779409
(1 row)

bitand(integer, integer)

描述:计算两个数字与运算(&)的结果。

返回值类型:bigint

示例:

1
2
3
4
5
SELECT bitand(127, 63);
 bitand 
--------
     63
(1 row)

sqrt(double precision or numeric)

描述:计算给定数值的平方根。

返回值类型:与输入类型相同。

示例:

1
2
3
4
5
SELECT sqrt(16.0);
       sqrt
-------------------
 4.000000000000000
(1 row)

cbrt(double precision)

描述:计算给定数值的立方根。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT cbrt(27.0);
 cbrt
------
    3
(1 row)

ceil(double precision or numeric)

描述:对给定值向上取整。x为正数,则朝远离0的方向取整。x为负数,则朝向0的方向取整。

返回值类型:与输入类型相同。

示例:

1
2
3
4
5
SELECT ceil(-42.8);
 ceil 
------
  -42
(1 row)

ceiling(double precision or numeric)

描述:对给定值向上取整(ceil(double precision or numeric)函数的的别名)。

返回值类型:与输入类型相同。

示例:

1
2
3
4
5
SELECT ceiling(-95.3);
 ceiling
---------
     -95
(1 row)

floor(double precision or numeric)

描述:对给定值向下取整。x为正数,则朝向0的方向取整;x为负数,则朝远离0的方向取整。

返回值类型:与输入类型相同。

示例:

1
2
3
4
5
SELECT floor(-42.8);
 floor 
-------
   -43
(1 row)

cos(x)

描述:计算x的余弦。

输入参数为double precision类型。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT cos(-3.1415927);
        cos        
-------------------
 -0.999999999999999
(1 row)

sin(x)

描述:计算x的正弦。

输入参数为double precision类型。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT sin(1.57079);
       sin        
------------------
 0.999999999979986
(1 row)

tan(x)

描述:计算x的正切。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT tan(20);
       tan        
------------------
 2.23716094422474
(1 row)

cot(x)

描述:计算x的余切。

输入参数为double precision类型。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT cot(1);
       cot
------------------
 0.642092615934331
(1 row)

degrees(double precision)

描述:将弧度转为角度。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT degrees(0.5);
     degrees
------------------
 28.6478897565412
(1 row)

radians(double precision)

描述:将角度转为弧度。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT radians(45.0);
     radians
------------------
 0.785398163397448
(1 row)

div(y numeric, x numeric)

描述:y除以x的商的整数部分。

返回值类型:numeric

示例:

1
2
3
4
5
SELECT div(9,4);
 div
-----
   2
(1 row)

exp(double precision or numeric)

描述:计算给定值的自然指数。

返回值类型:与输入类型相同。

示例:

1
2
3
4
5
SELECT exp(1.0);
        exp         
--------------------
 2.7182818284590452
(1 row)

random()

描述:返回0.0到1.0之间的随机数。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT random();
      random
------------------
 0.824823560658842
(1 row)

rand()

描述:返回0.0到1.0之间的随机数。此函数为Mysql兼容性函数,仅8.2.0及以上集群版本支持。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT rand();
      rand
------------------
 0.824823560658842
(1 row)

ln(double precision or numeric)

描述:自然对数。

返回值类型:与输入类型相同。

示例:

1
2
3
4
5
SELECT ln(2.0);
        ln         
-------------------
 0.6931471805599453
(1 row)

log(double precision or numeric)

描述:计算以10为底的对数。

  • ORA和TD兼容模式下,表现为以10为底的对数。
  • MySQL兼容模式下,表现为自然对数。

返回值类型:与输入类型相同。

示例:

ORA和TD兼容模式下计算给定数值100以10为底的对数。

1
2
3
4
5
SELECT log(100.0);
        log         
--------------------
 2.0000000000000000
(1 row)

MySQL兼容模式下计算给定数值100以自然数为底的对数。

1
2
3
4
5
SELECT log(100.0);
        log
--------------------
 4.6051701859880914
(1 row)

log(b numeric, x numeric)

描述:计算x以b为底数的对数。

返回值类型:numeric

示例:计算64.0以2.0为底的对数

1
2
3
4
5
SELECT log(2.0, 64.0);
        log         
--------------------
 6.0000000000000000
(1 row)

mod(x,y)

描述:计算x/y的余数(即取模运算)。如果x是0,则返回0。如果y是0,则返回x。

返回值类型:与参数类型相同。

示例:

1
2
3
4
5
SELECT mod(9,4);
 mod 
-----
   1
(1 row)
1
2
3
4
5
SELECT mod(9,0);
 mod 
-----
   9
(1 row)

pi()

描述:返回“π”值,精确到小数点后15位。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT pi();
        pi
------------------
 3.141592653589793
(1 row)

power(a double precision, b double precision)

描述:计算a的b次幂。

返回值类型:double precision

示例:

1
2
3
4
5
SELECT power(9.0, 3.0);
        power         
----------------------
 729.0000000000000000
(1 row)

round(double precision| 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函数时,数值类型将舍入到零,而(在大多数计算机上) 实数和双精度型,以最接近的偶数为结果。

round(v numeric, s int)

描述:将给定数值进行四舍五入,保留小数点后s位。

返回值类型:numeric

示例:

1
2
3
4
5
SELECT round(42.4382, 2);
 round
-------
 42.44
(1 row)

setseed(double precision)

描述:为随后的random()调用设置种子(-1.0到1.0之间,包含边界值)。

返回值类型:void

示例:

1
2
3
4
5
SELECT setseed(0.54823);
 setseed
---------

(1 row)

sign(double precision or numeric)

描述:返回给定值的符号,通过1、0、-1表示。

返回值-1表示给定值为负数,返回值0表示给定值为0,返回值1表示给定值为正数。

示例:

1
2
3
4
5
SELECT sign(-8.4);
 sign 
------
   -1
(1 row)

trunc(double precision or numeric)

描述:截断给定值的小数部分(即取整数部分)。

返回值类型:与输入类型相同。

示例:

1
2
3
4
5
SELECT trunc(42.8);
 trunc 
-------
    42
(1 row)

trunc(v numeric, s int)

描述:截断给定值v的小数部分,保留小数点后s位。

返回值类型:numeric

示例:

1
2
3
4
5
SELECT trunc(42.4382, 2);
 trunc
-------
 42.43
(1 row)

truncate(v numeric, s int)

描述:截断给定值v的小数部分,保留小数点后s位。

v除了可以是任意精度型,还可以是整型和浮点型,返回值与入参v类型相同。s为负数时截断整数部分。该函数仅8.2.0及以上集群版本支持。

返回值类型:numeric

示例:

1
2
3
4
5
SELECT truncate(42.4382, 2);
 truncate
-------
 42.4300
(1 row)

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)

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)