天天看點

MySQL 數值類型函數講解

1.1 什麼是函數 函數在計算機語言的使用中貫穿始終,函數的作用是什麼呢?它可以把我們經常使用的代碼封裝起來, 需要的時候直接調用即可。這樣既 提高了代碼效率 ,又 提高了可維護性 。在 SQL 中我們也可以使用函數 對檢索出來的資料進行函數操作。使用這些函數,可以極大地 提高使用者對資料庫的管理效率 。

數值函數:基本函數,

ABS(x) 傳回絕對值
SIGN(X) 傳回x的符号,正數傳回1,負數傳回-1,
CEIL(x),CEILING(x) 傳回大于等于某個值的最小值
FLOOR(X) 傳回大于或者等于某個值的最大值
Mod(x,y) 傳回x除以y後的餘數
RAND(X) 傳回0~1的随機值,其中x的值作為種子值,相同的種子值會産生相同的随機數
ROUND(x) 傳回一個對x的值進行四舍五入後,最接近于x的整數
ROUND(x,y) 傳回一個對x的值進行四舍五入後最接x的值,并保留到小數點後面y位
TRUNCATE(x,y) 傳回數字x 截斷位數y位數位後的結果

SELECT ABS(-123),ABS(123),CEIL(32.32),FLOOR(32.32),CEILING(-43.23),FLOOR(-43.23),MOD(12,5),12%5

FROM DUAL;

MySQL 數值類型函數講解

釋義: CEIL(x) 取X的天花闆FLOOP(x)的地闆 ceil(32.45) = 33,floor(32.45) = 32

MySQL 數值類型函數講解

 RAND(),RAND(x) ,RAND()和RAND(x)  rand()随機生成一個數,rand(x)當 RAND 中的因子相同是傳回的随機數是相同的,當以某個整數值作為參數來調用的時候,RAND() 會将該值作為随機數發生器的種子。對于每一個給定的種子,RAND() 函數都會産生一列可以複現的數字

SELECT RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1)

FROM DUAL;

MySQL 數值類型函數講解

 TRUNCATE(x,y)傳回數字x截斷為y位小數的結果

SELECT TRUNCATE(123.456,2)
MySQL 數值類型函數講解

 角度與弧度互換函數:

函數 用法

RADIANS(x) 将角度轉化為弧度,其中,參數x為角度值

DEGREES(x) 将弧度轉化為角度,其中,參數x為弧度值

什麼是角度呢? 什麼是弧度呢?

“ 弧度”和“度”是度量角大小的兩種不同的機關。就像“米”和“市尺”是度量長度大小的兩種不同的機關一樣。

弧度的定義:角(弧度)=弧長/半徑

圓的周長是半徑的 2π倍,是以一個周角(360度)是 2π弧度。 半圓的長度是半徑的 π倍,是以一個平角(180度)是 π弧度

MySQL 數值類型函數講解

 SELECT RADIANS(180) FROM DUAL;

SELECT DEGREES(PI())FROM DUAL;

# PI()  = π 就是π

MySQL 數值類型函數講解

三角函數函數用法:(三角函數 x 這裡填充的是 弧度值)

SIN(x) 傳回x的正弦值,其中,參數x為弧度值

sin(randians(30)),角度30等于弧度

MySQL 數值類型函數講解

SELECT  SIN (0.5235987755982988) from dual; 

sin(30) = 1/2 , 這裡的30比如轉換成弧度值[0.5235987755982988]

SIN (0.5235987755982988)  =  sin(randians(30))

MySQL 數值類型函數講解

ASIN(x) 傳回x的反正弦值,即擷取正弦為x的值。如果x的值不在-1到1之間,則傳回NULL

SELECT DEGREES(ASIN(1)) FROM DUAL;

ASIN(1) 是弧度值 π / 2    DEGREES(π / 2)

MySQL 數值類型函數講解

COS(x) 傳回x的餘弦值,其中,參數x為弧度值

ACOS(x) 傳回x的反餘弦值,即擷取餘弦為x的值。如果x的值不在-1到1之間,則傳回NULL TAN(x) 傳回x的正切值,其中,參數x為弧度值

ATAN(x) 傳回x的反正切值,即傳回正切值為x的值

ATAN2(M,N)函數傳回兩個參數的反正切值。 與ATAN(X)函數相比,ATAN2(M,N)需要兩個參數,例如有兩個 點point(x1,y1)和point(x2,y2),使用ATAN(X)函數計算反正切值為ATAN((y2-y1)/(x2-x1)),使用ATAN2(M,N)計 算反正切值則為ATAN2(y2-y1,x2-x1)。由使用方式可以看出,當x2-x1等于0時,ATAN(X)函數會報錯,而 ATAN2(M,N)函數則仍然可以計算。

SELECT DEGREES(ATAN(1)),DEGREES(ATAN2(1,0))

 FROM DUAL;

MySQL 數值類型函數講解

ATAN2(m,n) 傳回兩個參數的反正切值

SELECT DEGREES(ATAN(1,0)),DEGREES(ATAN(1,1))

 FROM DUAL;

MySQL 數值類型函數講解

COT(x) 傳回x的餘切值,其中,X為弧度值 

總結: 單行函數其實可以進行嵌套:

RADIANS(X),是将角度x轉換成弧度x,randians(60) ≈  弧度 1.04719,degrees(x)是将弧度轉換為角度。 是以現先角度轉換成弧度,又将弧度轉換成了角度,是以沒有變化。

MySQL 數值類型函數講解

提到了好幾個反函數,反函數是什麼?

與原函數在y=x這條線段上對稱的函數就是反函數,公式記為y=f^-1(x)。簡單的說,就是把y與x互換一下,比如y=x+2的反函數首先用y表示x即x=y-2,把x、y位置換一下就行那麼y=x+2反函數就是y=x-2