MySQL内置函数

tech2022-09-19  59

数学函数:

示例:

select now() -- 查询当前时间 select truncate(1011.2345678,2) -- 保留小数点后两位 select ceil(1000.1) -- 返回不小于1000的最大整数 select floor(1000.1) -- 返回不大于1000的最大整数 select rand() -- 返回0-1之间随机数 select truncate(rand(),2) -- 返回0-1之间随机数保留两位小数 select round(1000,1) select round(1000.5656,1) -- 四舍五入,保留小数点后1位

字符串函数:

示例;

char_length(s) -- 返回字符串s的字符数 length(s) -- 返回值为字符串s的长度,单位为字节 -- 示例:查找员工表中姓名只有两位的员工有哪些? select 姓名,部门 from 员工 where char_length(姓名)=2 -- 示例:将员工表的身份证从第三位到第七位进行掩码操作,确保身份证号不会泄露 select 姓名,insert (身份证号码,3,5,'*****') as 身份证号码 -- 使用left,right提取字符 select left ('abcd',2),right('abcd',2) 示例:查询员工表张姓员工有哪些 select 姓名,部门 from 员工 where 姓名 like '张%' select 姓名,部门 from 员工 where left (姓名,1)='张' 示例:查询电话号码为北京区号的员工及手机号 select 姓名,部门,电话号码 from 员工 where left (电话号码,3)='010' select 姓名,部门,left(出生日期,4) as 出生年份 from 员工 where left (出生日期,4)='1977' select 姓名,部门,left(目前薪资,1) as test from 员工 select 姓名,部门,电话号码 from 员工 where trim(姓名)='李明' select concat('aaa',space(5),'bbb') Replace(s,s1,s2):用字符s2代替s中的字符串s1 select replace('hello','l','x') 示例:将员工表中的家庭住址一栏中 东莞市 替换为 广东省东莞市 select 姓名,replace(家庭住址,'东莞市','广东省东莞市')as 家庭住址 from 员工 Substring(s,n,len):获取从字符串s中的第n个位置开始长度为len的字符串 select substring('hello',2,2) -- 取最左边两个字符 select substring('hello',1,2) -- 取最右边两个字符 select substring('hello world',char_length('hello world')-1,2) 示例:查找员工表中身份证号的第三位为7的员工,显示姓名和身份证号 select 姓名,身份证号码 from 员工 where substring(身份证号码,3,1)=7 示例:查找员工表中身份证号码倒数第三位为7的员工信息 select 姓名,身份证号码 , substring(身份证号码,char_length(身份证号码)-2,1)as 倒数第三位号码 from 员工 having 倒数第三位号码='7' Instr(s,s1):从字符串s中获取s1的开始位置 select Instr('hello','l')

日期时间函数:

select curdate(),curtime() select now() select year(now())as,month(now())as,day(now())as,hour(now())as,minute(now())as,second(now())asselect dayname(now()) select Dayofweek(now()) select week(curdate()) select Quarter(curdate()) 1.查询本日寿星从员工表,显示字段:姓名,部门,生日 select 姓名,部门,出生日期 from 员工 where month(now())=month(出生日期) and day(now())=day(出生日期) 2.将本月寿星导出至一张表中:本月寿星名单,姓名,部门,生日 create table '本月寿星名单' select 姓名,部门,出生日期 from 员工 where month(出生日期)=month(now()) Datediff(d1,d2):计算日期d1~d2之间相隔的天数 Adddate(d,n):计算起始日期d加上n天的日期 select datediff(curdate(),'2010-10-1')Adddate(d,interval expr type):计算起始日期d加上一个时间段后的日期 select adddate(curdate(),7) as 一周后,adddate(curdate(),-7) as 一周 前,adddate(curdate(),1)as 明天,adddate(curdate(),1) as 昨 天,adddate(curdate(),2) as 后天,adddate(curdate(),-2)as 前天 select adddate(curdate(),interval -2 year) select adddate(curdate(),interval 2 day) select adddate(curdate(),interval 2 month) subdate (d,n):计算起始日期d减去n天后的日期 subdate(d,interval expr type):计算起始日期d减去一个时间段后的日期 select subdate(curdate(),2) select subdate(curdate(),interval 2 day) select subdate(curdate(),interval 2 year) 1-从员工表中找出30年都没有加薪的员工(姓名,部门,目前薪资,加薪日期) select 姓名,部门,目前薪资,加薪日期 from 员工 where subdate(curdate(),interval 30 year)>加薪日期 select 姓名,部门,目前薪资,加薪日期 from 员工 where year(curdate())-year(加薪日期)>30 select 姓名,部门,目前薪资,加薪日期 from 员工 where timestampdiff(year,加薪日期,curdate())>30 2-将最近一次加薪的员工找出来,显示:姓名,部门,目前薪资,加薪日期) select 姓名,部门,目前薪资,加薪日期 from 员工 order by 加薪日期 desc limit 1 3-将以上员工加薪1000元,同时将加薪时间更新 update员工set目前薪资=目前薪资+1000,加薪日期=curdate() where员工编号in (select t.员工编号from ( select员工编号from员工 where timestampdiff(year,加薪日期,curdate())>30)t)

条件判断函数:

select 姓名,if(性别=0,'男','女') as 性别 from 员工

系统信息函数:

加密函数

select md5('123456') as 加密后的密码

转换函数

最新回复(0)