24H免费课程咨询  TEL:13401595960   QQ:1870218756  微信:13401595960(李老师)

东方博宜

网站首页 > 软件开发资讯 > Java开发

【常州编程培训】MySql常见函数

2017-12-03 16:46:35 东方博宜 阅读

1mysql常用函数

A、数学函数

ABS(X):绝对值

MOD(N,M):取余数

FLOOR(X):向下取整

CEILING(X):向上取整

ROUND(X,D):四舍五入

POW(X,Y)xy次方

SQRT(X):开根号

RAND()[0,1)范围的随机数

 

B、字符串函数

aLENGTH(str):求字符串长度  (char_length)

 

-- 查询名字长度为3的员工信息

select ename,length(ename),CHAR_LENGTH(ename) from emp;

select * from emp where CHAR_LENGTH(ename)=3;

 

bLOCATE(substr,str):求某个字符在父字符串的位置

 

-- 查询名字中有Li的员工信息

select * from emp where ename like '%li%';

select * from emp where locate('li',ename) != 0;

 

-- 查询中文名字中第三个字是''的员工

select * from emp where locate('',ename)=3;

 

cLEFT(str,len):左截取

dRIGHT(str,len):右截取

eSUBSTRING(str,pos,len)

-- 查询公司中姓李的员工

select * from emp where left(ename,1)='';

 

-- 截取所有员工名字中除了第一个字符以外的字符

select ename,SUBSTRING(ename,2) from emp;

 

fLTRIM(str):过滤左侧的空格

gRTRIM(str):过滤右侧的空格

htrim(str):过滤两侧的空格

select CHAR_LENGTH(ltrim(' 李晓明 ')),CHAR_LENGTH(rtrim(' 李晓明 ')),CHAR_LENGTH(trim(' 李晓明 '));

 

iREPLACE(str,from_str,to_str)

-- 将名字中的字符a替换成*输出

select ename,replace(ename,'a','*') from emp;

 

jREVERSE(str):将字符串颠倒

 

kLOWER(str):将字符串转成小写字符串

lUPPER(str):将字符串转成大写字符串

select lower(ename),upper(ename) from emp;

 

C、日期函数

anow():当前时间

select now();

 

bDAYOFWEEK(date) :求日期相对于某个时间点的天数

DAYOFMONTH(date)    DAYOFYEAR(date)

select DAYOFWEEK(now());

 

 

cMONTH(date) :取部分时间

YEAR(date)   DAY(date)   HOUR(time)  MINUTE(time)  SECOND(time)

-- 查询1010月份入职的员工

select * from emp where year(hiredate)=2010 and month(hiredate)=10;

 

dDATE_FORMAT(date,format) :日期格式化

-- 查询员工编号、姓名、薪水、入职时间,入职时间显示成xxxxxxxx日的格式

select empno,ename,sal,hiredate,DATE_FORMAT(hiredate,'%Y%m%d %H%i%s') from emp;

 

eUNIX_TIMESTAMP(date) :得到当前时间的时间戳

返回一个Unix时间戳('1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间)

select UNIX_TIMESTAMP(now()),FROM_UNIXTIME(1511174808)

 

fFROM_UNIXTIME(unix_timestamp,format):根据时间戳得到对应的时间

-- 获取当前时间距离1970-1-1 零时的秒数

 

-- 计算某个时间的时间戳

 

 

-- 计算时间戳对应的时间

select FROM_UNIXTIME('1420041600');

select FROM_UNIXTIME('1420041600','%y-%m-%d');

 

gTIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) :两个时间的时间差

-- 计算今年已经过的月数(保留2位小数)

select round(TIMESTAMPDIFF(DAY,'2017-1-1',now()) / 30,2);

select timestampdiff(MONTH,'2017-1-1',now());

 

-- 计算公司中每个员工的工龄(保留1位小数)

select *,round(timestampdiff(month,hiredate,now()) / 12,1) as '工龄' from emp;

 

-- 查询入职满3年的员工信息

select * from emp where timestampdiff(year,hiredate,now()) >= 3;

 

hTIMESTAMPADD(unit,interval,datetime_expr):某个时间加上另外一个时间得到的日期

-- 计算100天后的今天的日期

select now(),timestampadd(day,100,now());

 

DNULL判断函数

-- 查询员工的编号、姓名、薪水、奖金、总薪水

-- ifnull():如果第一参数不为空,显示第一参数,否则显示第二参数

-- 查询员工编号、姓名、薪水、奖金,如果薪水为null,显示0,奖金为null,显示0

select empno,ename,ifnull(sal,0),ifnull(comm,0) from emp;

 

-- 查询员工的编号、姓名、薪水、奖金、总薪水

select empno,ename,sal,comm,ifnull(sal,0)+ifnull(comm,0) from emp;

 

单行函数:对一行记录处理,得到一个对应的结果

 

2、多行函数:对多行结果处理,得到一个结果

多行函数在sqlserver又叫做分组函数(聚合函数)!

 

select max(sal),min(sal),sum(sal),avg(sal),count(*) from emp;

select count(empno) from emp;

 

注意:函数在处理数据时,空值不参加处理!

 

效率:

从效率的角度来说,一般不select *,而是select需要的字段!

一般不Count(*),而是count(非空字段),一般count(主键)


Powered by 东方博宜教育咨询江苏有限公司  ©2008-2017 www.czos.cn