Mysql 常用函数

tech2024-10-16  13

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 员工
最新回复(0)