筆記來自如鵬網楊中科老師所著的 《程序員的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