首页 👨‍💻计算机,🐋mysql

mysql内置函数

1,数学函数

  • ABS(x):返回x的绝对值
  • CEIL(x),CEILIN(x):返回不小于x的最小整数值
  • Floor(x):返回不大于x的最大整数值
  • Rand():返回O~1的随机数
  • and(x):返回O~1的随机数,x值相同时返回随机数相同
  • Sign(x):返回参数作为-1,0或1的符号,该符号取决于x的值为负、零或正
  • Pi():返回[的值,默认的显示小数位数是7位
  • truncate(x,y):返回数值x保留到小数点后y位的值
  • Round(x):返回离x最近的整数
  • round(x,y):返回数值x保留到小数点后y位的值,但要四舍五入

例子:

保留小数点后两位
select truncate(1011.2347658,2)
返回不小于x的最小整数
select ceil(1000.1)
返回不小于x的最大整数
select floor(1000.1)
返回0-1的随机数
select truncate (RAND(),2)
Roundf返回离x最近的整数(取整)
select Round(1000.1)
返回数值x保留小数点后y位的值,四舍五入
select round(1000.235432,2)

2,字符串函数

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

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

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

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

Upper(s),ucase(s):将字符串s的所有字母都变成大写字母

left(s,n):从字符s开始的前n个字符

right(s,n):从字符串s开始,返回右边的n个字符

示例:

Insert(sl,x,len,s2):将字符串s2替换s1的x位置开始长度为len的字符串,mysql中字符串的索引从1开始
select insert('hello',2,2,'xxx')
Char_length(s):返回字符串s的字符数

select char_length('hello,中国')
查找员工表中姓名只有两位的员工有哪些

select 姓名,部门 from 员工 where char_length(姓名)=2

判断手机号不为10,9,11
select userName,mobile from easybuy_user where char_length(mobile)not in(9,10,11)

left(s,n)从字符串s开始返回左边前n个字符
right(s,n)从字符串s开始返回右边的前n个字符
select left('abcd',2),right('abcd',2)
select left('a中国d',2),right('a中国d',2)

查询员工表姓张员工有哪些
select 姓名,部门 from 工龄 where 姓名 like '张%'
select 姓名,部门 from 工龄 where left(姓名,1)='张'

查询电话号码为北京区号(010)的员工及手机号
select 姓名,部门,电话号码 from 工龄 where left(电话号码,3)='010'
select 姓名,部门,left(目前薪资,1) as test from 工龄

left(s,n)从字符串s开始返回左边前n个字符
right(s,n)从字符串s开始返回右边的前n个字符
select left('abcd',2),right('abcd',2)
select left('a中国d',2),right('a中国d',2)
查询员工表姓张员工有哪些

select 姓名,部门 from 工龄 where 姓名 like '张%'
select 姓名,部门 from 工龄 where left(姓名,1)='张'
查询电话号码为北京区号(010)的员工及手机号

select 姓名,部门,电话号码 from 工龄 where left(电话号码,3)='010'
select 姓名,部门,left(目前薪资,1) as test from 工龄

update 员工 set 身份证号码 =insert(身份证号码)

replace函数替换 select replace('hello','l','x')

将员工表中的家庭住址一栏中 东莞市替换成广东省东莞市

select 姓名,replace(家庭住址,'东莞市','广东省东莞市') as 家庭住址 from 工龄

update 工龄 set 家庭住址=replace(家庭住址,'东莞市','广东省东莞市')

取最左边的2个字符,多价于left('hello',2)

select substring('hello',2,2)

取最右边的2个字符,等价于right('hello'2)

select substring('hello',1,2)

select substring('hello',char_length('hello')-1,2)

select substring('hello world',char_length('hello world')-1,2)

查询出身份证号第三位为7的员工
select 姓名,身份证号码,substring(身份证号码,3,1) as 身份证号 from 工龄 where substring(身份    证号码,3,1)=7

查询出身份证号倒数第三位为是7的员工
select 姓名,身份证号码,substring(身份证号码,-3,1) as 倒数第三位 from 工龄 where substring(身  份证号码,-3,1)=7

查询出@不在表,在前在后
select loginName,userName,email from easybuy_user where instr(email,'@')='@'
or left(email,1)='@'or right(email,1)='@'

3,日期和时间函数

获取当前时分秒
select CURDATE(),CURDATE();
获取当前的时间
select NOW()
获取当前的年份,月份,日期,小时,分,秒
select 姓名,部门,year(出生日期) as 生日 from 工龄 where MONTH出生日期)year(出生日期)
示例:
1-从员工表中找出30
年都没有加薪的员工(姓名,部门,目前薪资,加薪日期)
2-将最近一次加薪的员工找出来,
显示:姓名,部门,目前薪资,加薪日期)
select 姓名,部门,目前薪资,加薪日期 from员工 order by加薪日期 desc limit 1
3-将以上员工加薪1000元,同时将加薪时间更新
第一种写法;
select 姓名,部门,目前薪资,加薪日期 from 工龄 where year(curdate())-year(加薪日期)>30
第二种写法;
select 姓名,部门,目前薪资,加薪日期 from 工龄
where subdate(curdate(),interval 30 year)>加薪日期
第三种法;
select 姓名,部门,目前薪资,加薪日期 from 工龄
where timestampdiff(year,加薪日期,curdate())>30



文章评论

目录