本文介绍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)
atan(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(-3.5);
      返回结果如下:
      +-------------+
      | floor(-3.5) |
      +-------------+
      |          -4 |
      +-------------+

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 |
    +--------------------+