数值函数

数值函数用于对数值型数据进行各种运算。本文介绍云原生数据仓库 AnalyticDB MySQL 版数值函数的详细用法与示例。

  • ABS:返回参数的绝对值。

  • ACOS:返回参数的反余弦值。

  • ASIN:返回参数的反正弦值。

  • ATAN:返回参数的反正切值。

  • ATAN2:返回参数x除以参数y之后的反正切值。

  • CEILING或CEIL:返回大于等于参数x,且最接近x的整数值。

  • COS:返回参数的余弦值。

  • COT:返回参数的余切值。

  • CRC32:返回参数的循环冗余码。

  • DEGREES:弧度转换为角度。

  • EXP:返回以e为底、x为幂的值。

  • FLOOR:返回小于等于参数x,且最接近x的整数值。

  • LN:返回参数的自然对数。

  • LOG:对数函数。

  • LOG2:返回以2为底的对数。

  • LOG10:返回以10为底的对数。

  • PI:返回圆周率pi的值。

  • POWER/POW:返回x的y次幂。

  • RADIANS:角度转换为弧度。

  • RAND返回目标数字范围内的一个随机数。

  • ROUND:返回参数四舍五入后的值。

  • SIGN:返回参数的符号的值。

  • SIN:返回参数的正弦值。

  • SQRT:返回参数的平方根。

  • TAN:返回参数的正切值。

ABS

abs(x)
  • 命令说明:返回参数x的绝对值。

  • 输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。

  • 返回值类型:

    • 当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。

    • 当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。

    • 当输入值类型为DECIMAL时,返回值类型为DECIMAL。

  • 示例:

    • SELECT abs(4.5);

      返回结果如下:

      +----------+
      | abs(4.5) |
      +----------+
      |      4.5 |
      +----------+
    • SELECT abs(-4);

      返回结果如下:

      +--------+
      | abs(4) |
      +--------+
      |      4 |
      +--------+

ACOS

acos(x)            
  • 命令说明:返回参数x的反余弦值。

    如果x>1或者x<-1,返回结果为NULL

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT acos(0.5);              

    返回结果如下:

    +--------------------+
    | acos(0.5)          |
    +--------------------+
    | 1.0471975511965979 |
    +--------------------+

ASIN

asin(x)            
  • 命令说明:返回参数x的反正弦值。

    如果x>1或者x<-1,返回结果为NULL

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT asin(0.5);

    返回结果如下:

    +--------------------+
    | asin(0.5)          |
    +--------------------+
    | 0.5235987755982989 |
    +--------------------+

ATAN

atan(x)            
  • 命令说明:返回参数x的反正切值。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT atan(0.5);             

    返回结果如下:

    +--------------------+
    | atan(0.5)          |
    +--------------------+
    | 0.4636476090008061 |
    +--------------------+

ATAN2

atan2(x, y)          
  • 命令说明:返回参数x除以参数y之后的反正切值。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT atan2(0.5,0.3);

    返回结果如下:

    +--------------------+
    | atan2(0.5,0.3)     |
    +--------------------+
    | 1.0303768265243125 |
    +--------------------+           

CEILING或CEIL

ceiling(x)
ceil(x)
  • 命令说明:返回大于或等于x,且最接近x的整数。

  • 输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。

  • 返回值类型:

    • 当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。

    • 当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。

    • 当输入值类型为DECIMAL时,返回值类型为DECIMAL。

  • 示例:

    • SELECT ceiling(4);

      返回结果如下:

      +------------+
      | ceiling(4) |
      +------------+
      |          4 |
      +------------+
    • SELECT ceil(-4.5);

      返回结果如下:

      +------------+
      | ceil(-4.5) |
      +------------+
      |         -4 |
      +------------+

COS

cos(x)            
  • 命令说明:返回x的余弦值。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT cos(1.3);

    返回结果如下:

    +---------------------+
    | cos(1.3)            |
    +---------------------+
    | 0.26749882862458735 |
    +---------------------+

COT

cot(x)            
  • 命令说明:返回参数x的余切值。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT cot(1.234);

    返回结果如下:

    +---------------------+
    | cot(1.234)          |
    +---------------------+
    | 0.35013639786701445 |
    +---------------------+

CRC32

crc32(x)            
  • 命令说明:返回参数x的循环冗余码。

  • 输入值类型:VARBINARY。

  • 返回值类型:BIGINT。

  • 示例:

    SELECT crc32('中国');                   

    返回结果如下:

    +-----------------+
    | crc32('中国')   |
    +-----------------+
    |       737014929 |
    +-----------------+

DEGREES

degrees(x)            
  • 命令说明:弧度转换为角度。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT degrees(1.3);

    返回结果如下:

    +-------------------+
    | degrees(1.3)      |
    +-------------------+
    | 74.48451336700703 |
    +-------------------+

EXP

exp(x)            
  • 命令说明:返回以e为底,x为幂的值。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT exp(4.5);

    返回结果如下:

    +-------------------+
    | exp(4.5)          |
    +-------------------+
    | 90.01713130052181 |
    +-------------------+

FLOOR

floor(x)
  • 命令说明:返回小于或等于x,且最接近x的整数。

  • 输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。

  • 返回值类型:

    • 当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。

    • 当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。

    • 当输入值类型为DECIMAL时,返回值类型为DECIMAL。

  • 示例:

    • SELECT floor(7);

      返回结果如下:

      +----------+
      | floor(7) |
      +----------+
      |        7 |
      +----------+
    • SELECT floor(0.8);
      说明

      AnalyticDB for MySQL会将0.8处理成DECIMAL类型的值。当输入值类型为DECIMAL时,返回值类型为DECIMAL。

      返回结果如下:

      +-------------+
      | floor(0.8)  |
      +-------------+
      |           0 |
      +-------------+
    • SELECT floor(4/5);
      说明

      AnalyticDB for MySQL会将4/5处理成DOUBLE类型的值。当输入值类型为DOUBLE时,返回值类型为DOUBLE。您可以使用CAST函数,将floor(4/5)=0.0转换成INTEGER或BIGINT,详情请参见CAST AS BIGINT

      返回结果如下:

      +-------------+
      | floor(4/5)  |
      +-------------+
      |         0.0 |
      +-------------+

LN

ln(x)            
  • 命令说明:返回x的自然对数。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT ln(2.718281828459045);

    返回结果如下:

    +-----------------------+
    | ln(2.718281828459045) |
    +-----------------------+
    |                   1.0 |
    +-----------------------+

LOG

log(x)
log(x, y)            
  • 命令说明:

    • 输入一个参数时,返回x的自然对数。

    • 输入两个参数时,返回以x为底的y的对数。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    • SELECT log(16);

      返回结果如下:

      +-------------------+
      | log(16)           |
      +-------------------+
      | 2.772588722239781 |
      +-------------------+
    • SELECT log(10,100);

      返回结果如下:

      +-------------+
      | log(10,100) |
      +-------------+
      |         2.0 |
      +-------------+

LOG2

log2(x)            
  • 命令说明:返回以2为底的对数。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT log2(8.7654);

    返回结果如下:

    +-------------------+
    | log2(8.7654)      |
    +-------------------+
    | 3.131819928389146 |
    +-------------------+

LOG10

log10(x)            
  • 命令说明:返回以10位底的对数。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT log10(100.876);

    返回结果如下:

    +--------------------+
    | log10(100.876)     |
    +--------------------+
    | 2.0037878529824615 |
    +--------------------+

PI

pi()
  • 命令说明:返回圆周率pi的值。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT pi();

    返回结果如下:

    +-------------------+
    | pi()              |
    +-------------------+
    | 3.141592653589793 |
    +-------------------+

POWER/POW

power(x, y)
pow(x, y)
  • 命令说明:返回xy次幂。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    • SELECT power(1.2,3.4);

      返回结果如下:

      +-------------------+
      | power(1.2,3.4)    |
      +-------------------+
      | 1.858729691979481 |
      +-------------------+
    • SELECT pow(-2,-3);

      返回结果如下:

      +------------+
      | pow(-2,-3) |
      +------------+
      |     -0.125 |
      +------------+

RADIANS

radians(x)            
  • 命令说明:角度转换为弧度。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT radians(60.0);

    返回结果如下:

    +--------------------+
    | radians(60.0)      |
    +--------------------+
    | 1.0471975511965976 |
    +--------------------+

RAND

rand()
rand()*(y-x)+x
  • 命令说明:随机函数rand()不支持设置入参,会随机返回0到1之间(包含0但不包含1)的一个数。

    您也可以使用rand()*(y-x)+x函数,随机返回xy之间(包含x但不包含y)的一个数。

  • 返回值类型:DOUBLE。

  • 示例:

    • SELECT rand();

      返回结果如下:

      +--------------------+
      | rand()             |
      +--------------------+
      | 0.6613712594764614 |
      +--------------------+
    • 随机返回3到12之间的一个浮点数。

      SELECT rand()*(12-3)+3;

      返回结果如下:

      +-------------------+
      | rand()*(12-3)+3   |
      +-------------------+
      | 9.073329270781976 |
      +-------------------+

ROUND

round(x)
round(x,d)
  • 命令说明:将参数x四舍五入,d是要保留的精度,默认d0,舍入算法取决于x的数据类型。

    • 如果xnull,返回结果为NULL

    • 如果d>0,则四舍五入到指定的小数位。

    • 如果d=0,则四舍五入到最接近的整数。

    • 如果d<0,则四舍五入到小数点左侧的指定位数。

  • 输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。

  • 返回值类型:

    • 当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。

    • 当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。

    • 当输入值类型为DECIMAL时,返回值类型为DECIMAL。

  • 示例:

    • 将345.983四舍五入到最近的整数。

      SELECT round(345.983,0);

      返回结果如下:

      +------------------+
      | round(345.983,0) |
      +------------------+
      |          346.000 |
      +------------------+
    • 将345.123四舍五入到小数点后一位。

      SELECT round(345.123,1);

      返回结果如下:

      +------------------+
      | round(345.123,1) |
      +------------------+
      |          345.100 |
      +------------------+
    • 将345.984四舍五入到小数点前一位。

      SELECT round(344.984,-1);                  

      返回结果如下:

      +-------------------+
      | round(344.984,-1) |
      +-------------------+
      |           340.000 |
      +-------------------+
    • 将345.984四舍五入到小数点前4位。

      SELECT round(345.984,-4);                  

      返回结果如下:

      +-------------------+
      | round(345.984,-4) |
      +-------------------+
      |             0.000 |
      +-------------------+

SIGN

sign(x)
  • 命令说明:根据参数x的符号返回对应的数值:

    • 如果x>0,则返回1。

    • 如果x=0,则返回0。

    • 如果x<0,则返回-1。

  • 输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。

  • 返回值类型:BIGINT。

  • 示例:

    • SELECT sign(12);

      返回结果如下:

      +----------+
      | sign(12) |
      +----------+
      |        1 |
      +----------+
    • SELECT sign(-4.5);

      返回结果如下:

      +------------+
      | sign(-4.5) |
      +------------+
      |         -1 |
      +------------+

SIN

sin(x)            
  • 命令说明:返回参数x的正弦值。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT sin(1.234);

    返回结果如下:

    +--------------------+
    | sin(1.234)         |
    +--------------------+
    | 0.9438182093746337 |
    +--------------------+

SQRT

sqrt(x)            
  • 命令说明:返回参数x的平方根。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT sqrt(4.222);

    返回结果如下:

    +-------------------+
    | sqrt(4.222)       |
    +-------------------+
    | 2.054750593137766 |
    +-------------------+

TAN

tan(x)            
  • 命令说明:返回参数x的正切值。

  • 输入值类型:DOUBLE。

  • 返回值类型:DOUBLE。

  • 示例:

    SELECT tan(8);

    返回结果如下:

    +--------------------+
    | tan(8)             |
    +--------------------+
    | -6.799711455220379 |
    +--------------------+