數值函數
數值函數用于對數值型數據進行各種運算。本文介紹云原生數據倉庫 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)
命令說明:返回
x
的y
次冪。輸入值類型: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
函數,隨機返回x
到y
之間(包含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
是要保留的精度,默認d
為0
,舍入算法取決于x
的數據類型。如果
x
為null
,返回結果為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 | +--------------------+