數值函數用於對數值型資料進行各種運算。本文介紹AnalyticDB for 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 | +--------------------+