Mysql 常用函数

1.数学函数

1.ABS(x):返回x的绝对值

SELECT ABS(`目前薪资`) FROM  `员工`

2.CEIL(x),CEILIN(x):返回不小于x的最小整数值

SELECT  CEIL(`单价` ) FROM `订货明细`

3.Floor(x):返回不大于x的最大整数值

SELECT FLOOR( `单价`) FROM `订货明细`

4.Pi():返回∏的值,默认的显示小数位数是7位 e

SELECT PI()

5.truncate(x,y):返回数值x保留到小数点后y位的值

SELECT TRUNCATE(单价,2) FROM `订货明细`

6.round(x,y):返回数值x保留到小数点后y位的值,但要四舍五入

SELECT ROUND(`单价`,0) FROM `订货明细`

2.字符串函数

1.Char_length(s):返回字符串s的字符数

SELECT   `姓名`   FROM  `员工`   WHERE CHAR_LENGTH(`目前薪资`) NOT in(4)   不等于位数四个的返回
SELECT  *FROM `员工`  WHERE   CHAR_LENGTH(`工作代码`)=3  等于位数3

2.Length(s):返回值为字符串s的长度,单位为字节

 SELECT  `姓名` FROM  `员工`  WHERE LENGTH( `目前薪资`)=5

3.Concat(s1,s2,…):返回结果为连接参数产生的字符串

 SELECT  CONCAT(`部门`,`姓名`) FROM `员工`

4.Insert(s1,x,len,s2):将字符串s2替换s1的x位置开始长度为len的字符串

 SELECT   姓名, INSERT (`身份证号码` ,3,7,'*****') AS 身份证  FROM   `工龄`

5.Trim(s):去掉字符串s开始处和结尾处的空格

SELECT   TRIM('???')

6.Trim(s1 from s):去掉字符串s中开始处和结尾处的字符串s1 (索引,全部)

SELECT TRIM( '仁' FROM  `姓名`)  FROM `员工` 

7.Strcmp(s1,s2):比较字符串s1和s2

SELECT  STRCMP( `目前薪资` ,`起薪`) FROM `员工`

8.Substring(s,n,len):获取从字符串s中的第n个位置开始长度为len的字符串

SELECT  `姓名` ,`身份证号码` FROM `员工` WHERE  SUBSTRING( `身份证号码`,3,1)=7

8.1查找第三位为7并且为的女的

SELECT  `姓名` ,`身份证号码` FROM `员工` WHERE  SUBSTRING( `身份证号码`,3,1)=7 AND  mod(substring(身份证号码,14,1)=2,2)=0 

8.2查找倒数第三位

SELECT   `姓名` ,`身份证号码` FROM  `员工` WHERE  SUBSTRING(`身份证号码`,CHAR_LENGTH(`身份证号码`)-2,1)=1

9.Locate(s1,s),position(s1 in s):从字符串s中获取s1的开始位置 "(索引,全部)

SELECT  POSITION('d' IN 'asdasd')

3日期时间函数

1.}now(),current_timestamp(),localtime(),sysdate(),localtimestamp():返回当前日期和时间

SELECT NOW()

2.}Month(d):返回日期d中的月份值,范围是1~12

 SELECT MONTH(NOW())

3.DAYOFWEEK (s)-1返回日期s 是星期几

 SELECT   DAYOFWEEK(NOW())-1

4.Hour(t):返回时间t中的小时值

 SELECT  HOUR( NOW() )

5.Datediff(d1,d2):计算日期d1~d2之间相隔的天数

 SELECT  DATEDIFF(CURDATE(),'2020-08-10')

6.}Adddate(d,n): 计算起始日期d加上n天的日期

 SELECT  ADDDATE(CURDATE(),7) AS 一周后,
 ADDDATE(CURDATE(), INTERVAL-7 day) AS 一周前,
 ADDDATE(CURDATE(), INTERVAL-7 month) AS 七月前,
  ADDDATE(CURDATE(), INTERVAL-7 year) AS 七年前
	##Subdate(d,n):计算起始日期d减去n天后的日期
SELECT   SUBDATE(CURDATE(),INTERVAL 7 day)

6.1.找出30年没有加薪的员工显示(姓名,部门,目前薪资,加薪日期。)

	 SELECT  `姓名` ,`部门` , `目前薪资` , `加薪日期` FROM  `员工` WHERE YEAR(NOW())- YEAR(`加薪日期`)>=30
	 SELECT  `姓名` ,`部门` , `目前薪资` , `加薪日期` FROM  `员工` WHERE  SUBDATE(now(),INTERVAL 30 YEAR)>`加薪日期`  

6.2. 将最近一次加薪的员工找出来显示(姓名,部门,目前薪资,加薪日期)

 SELECT  `姓名` ,`部门` , `目前薪资` , `加薪日期` FROM  `员工` ORDER BY  `加薪日期` DESC  LIMIT 1

6.3. 将以上员工加薪1000员,同时将加薪时间更新

UPDATE   `员工` SET   `目前薪资`=`目前薪资`+1000,`加薪日期`=CURDATE()    WHERE   `员工编号` IN(SELECT t. `员工编号`FROM(
SELECT `员工编号` FROM  `员工`  WHERE  YEAR(NOW())- YEAR(`加薪日期`)>30)t)

4条件判断函数

If(expr,v1,v2):如果表达式expr成立,则执行v1,否则执行v2

SELECT IF(`目前薪资`>5000,'高新','底薪') FROM `员工`

Ifnull(v1,v2):如果v1不为空,则显示v1的值,否则显示v2的值

SELECT IFNULL( `加薪日期`,NOW()) FROM  `员工`

6加密函数

Md5(str):对字符串str进行加密。经常用于对普通数据进行加密

SELECT MD5(`身份证号码`)FROM  员工

你可能感兴趣的:(Mysql)