筆記來自如鵬網楊中科老師所著的 《程序員的SQL金典》
#建立數據庫表
CREATE Table T_Person (
FIdNumber VARCHAR(20),
FName varchar(20),
FBirthDay DateTime,
FRegDay DateTime,
FWeight DECIMAL(10,2)
)
#插入數據
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789120','Tom','1981-03-22','1998-05-01',56.67);
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789121','Jim','1987-01-18','1999-08-21',36.17);
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789122','Lily','1987-11-08','2001-09-18',40.33);
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789123','Kelly','1982-07-12','2000-03-01',46.23);
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789124','Sam','1983-02-16','1998-05-01',48.68);
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789125','Kerry','1984-08-07','1999-03-01',66.67);
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789126','Smith','1980-01-09','2002-09-23',51.28);
insert into T_Person(FidNumber,FName,FBirthDay,FRegDay,FWeight) VALUES('123456789127','BillGates','1972-07-18','1995-06-19',60.32);
#1、求絕對值: MySQL 、 MSSQL Server 都適合
#ABS(X)函數,該函數接受一個參數。
select FWeight-50,ABS(FWeight-50),ABS(-5.38) FROM T_Person
#2、求指數: MySQL 、 MSSQL Server 都適合
#POWER(X,Y)函數,該函數接受兩個參數。 第一個參數爲待求冪的表達式,第二個參數爲冪。
select FWeight ,Power(FWeight,-0.5),POWER(FWeight,2),POWER(FWeight,3),POWER(FWeight,4) from T_Person
#3、求平方根: MySQL 、 MSSQL Server 都適合
#SQRT(X) 函數。該函數接受一個參數。這個參數爲待計算平方根的表達式。
select FWeight,SQRT(FWeight) from T_Person
#4、求隨機數
#MySQL 中 Rand() 函數
select Rand()
#MSSQL Server 中 Rand()函數。和MySQL使用方法同樣。可是還提供了一個參數 Rand(X) 這個參數爲隨機數種子。
select Rand(2017)
#5、舍入到最大整數 ---- 取天花板數。 這個函數用來舍掉一個數的小數點後的部分,而且向上舍入到鄰近的最大的整數。好比 3.33 將被舍入爲 4
#MySQL 中 CEIL(X) 、 CEILING(X) 均可以
select FWeight,CEIL(FWeight) FROM T_Person
select FWeight,CEILING(FWeight) from T_Person
#MSSQL Server 中只支持 CEILING(X)
select FWeight,CEILING(FWeight) from T_Person
#6、舍入到最小整數 ---- 取地板數。 這個函數用來舍掉一個數的小數點後的部分,而且向下舍入到鄰近的最小的整數。好比 3.33 將被舍入爲 3
#MySQL 、 MSSQL Server 中 FLOOR(X)函數。
select FWeight,FLOOR(FWeight) from T_Person
#7、四捨五入 ---- ROUND()函數將數值向最近的數值舍入。在英語中 ROUND 能夠理解爲「半徑」 ,舍入到「離我半徑最近的數」固然也就是四捨五入了。
#ROUND(X) ROUND(X,D)函數 該函數可接受一個 參數的,也可接受兩個參數的。
#1)、兩個參數的ROUND(X,D)函數 。
X爲待進行四捨五入的數值,而D爲計算精度,
也就是進行四捨五入時保留的小數位數。
當 D 爲 0 的時候則表示不保留小數位進行四捨五入。好比 3.663 進行精度爲2的四捨五入獲得 3.66。
當 D 爲 0 的時候則表示不保留小數位進行四捨五入。好比 3.663 進行精度爲 0 的四捨五入獲得 4
注意:D也能夠爲負數。這時表示在整數部分進行四捨五入
好比 233.7 進行精度爲-2 的四捨五入獲得 200。 36.63 進行精度爲-1 的四捨五入獲得 40。
select FName , FWeight ,ROUND(FWeight,1),ROUND(FWeight*-1,0),ROUND(FWeight,-1) from T_Person
#2)、單一參數的ROUND(X)函數。
X 爲待進行四捨五入的數值,它能夠看作精度爲 0 的四捨五入運算, 也就是 ROUND(m,0) 好比 3.663 進行四捨五入獲得 4
select FName,FWeight,ROUND(FWeight),ROUND(FWeight*-1) FROM T_Person
#8)、求正弦值:
#SIN(X) 該函數接受一個參數。
select FName,FWeight, SIN(FWeight) from T_Person
#9)、求餘弦值:
#COS(X) 該函數接受一個參數。
select FName ,FWeight,COS(FWeight) from T_Person
#10)、求反正弦值:
#ASIN(X) 該函數接受一個參數。
select FName ,FWeight ,ASIN(1/FWeight) FROM T_Person
#11)、求反餘弦值:
#ACOS(X) 該函數接受一個參數。
SELECT FName ,FWeight ,ACOS(1/FWeight) FROM T_Person
#12)、求正切值:
#TAN(X) 該函數接受一個參數。
select FName ,FWeight ,TAN(FWeight) from T_Person
#13)、求反正切值:
#MySQL 中支持 ATAN(X) ATAN(X,Y) ATAN2(X,Y) 。後兩個的計算結果同樣。
#ATAN2(X,Y),函數返回 2 個變量 X 和 Y 的反正切
select FName ,FWeight ,ATAN(FWeight) from T_Person
select FName ,FWeight ,ATAN(FWeight,2) from T_Person
select FName ,FWeight ,ATAN2(FWeight,2) from T_Person
#MSSQL Server 中 支持 ATAN(X) ATN2(X,Y)
select FName ,FWeight ,ATAN(FWeight) from T_Person
select FName ,FWeight ,ATN2(FWeight,2) from T_Person
#14)、求餘切:
#COT(X) 該函數接受一個參數。
select FName ,FWeight ,COT(FWeight) from T_Person
#15)、求圓周率π值:
#PI() 該函數不接受參數。
select FName ,FWeight ,FWeight*PI() from T_Person
#16)、 弧度制轉換爲角度制:
#DEGREES(X) 該函數接受一個參數。 角度制=弧度制*180/π
select FName ,FWeight ,DEGREES(FWeight) from T_Person
select FName ,FWeight ,(FWeight*180)/ACOS(-1) from T_Person
#17)、角度制轉換爲弧度制:
#RADIANS(X) 該函數接受一個參數。 弧度制=角度制*π/180
select FName ,FWeight ,RADIANS(FWeight) from T_Person
select FName ,FWeight ,(FWeight*ACOS(-1))/180 from T_Person
#18)、求符號:
#SIGN(X) 該函數接受一個參數。 若是數值大於 0 則返回 1,若是數值等於 0 則返回 0,若是數值小於 0 則返回-1。
select FName ,FWeight-48.68 ,SIGN(FWeight-48.68) FROM T_Person
#19)、求整除餘數:
#MySQL中提供了MOD()函數 :用來計算兩個數整除後的餘數。第一個參數爲除數,第二個參數爲被除數。
select FName,FWeight,MOD(FWeight , 5) FROM T_Person
#MSSQL Server不支持MOD()。 不過直接支持操做符 "%" 用來計算兩個數的整數餘數。
select FName ,FWeight , FWeight%5 from T_Person
#20)、求天然對數:
#MySQL中:
#LOG(X) 該函數接受一個參數。 也接受兩個數的參數。
#LOG(B,X) B爲本身輸入的整數。 X爲待求的參數。
#MySQL支持以2爲底、以10爲底的,以任意本身輸入的爲底的對數。
select FName ,FWeight ,LOG(FWeight) from T_Person
select FName ,FWeight ,LOG2(FWeight) from T_Person
select FName ,FWeight ,LOG10(FWeight) from T_Person
select FName ,FWeight ,LOG(2,FWeight) from T_Person
#MSSQL Server中:
#只支持LOG(X) 、LOG10(X) 爲底的對數。
select FName ,FWeight ,LOG(FWeight) from T_Person
select FName ,FWeight ,LOG10(FWeight) from T_Person
#21)、求冪:
#POWER(X,Y) 該函數接受兩個參數 。X 爲次冪 Y 爲待求冪的字段
#MySQL 中
select FName , FWeight , POWER(2,FWeight) from T_Person
select FName , FWeight , POW(2,FWeight) from T_Person
#MSSQL Server 中支持 POWER(X,Y)
select FName , FWeight , POWER(2,FWeight) from T_Person