[常州电脑培训]MySql常见函数 _常州电脑培训_常州网络营销培训_常州软件开发培训_常州东方博宜教育
扫一扫,加我们为好友有惊喜哦~
-->

核心课程
开班动态
专题服务

您当前所在位置:首页 > 中心动态 >>
[常州电脑培训]MySql常见函数

1、mysql常用函数
A、数学函数
ABS(X):绝对值

MOD(N,M):取余数

FLOOR(X):向下取整

CEILING(X):向上取整

ROUND(X,D):四舍五入

POW(X,Y):x的y次方

SQRT(X):开根号

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

select abs(-12),mod(10,3),mod(3,10),floor(1.2),
       ceiling(1.2),round(3.1415926,3),pow(2,10),sqrt(4),rand();


B、字符串函数
a、LENGTH(str):求字符串长度
select length('abc'),length('中') / 3;
select ename,length(ename) from emp;

-- 查询名字长度为5的员工信息
select * from emp where length(ename)=5;

b、LOCATE(substr,str):求某个字符在父字符串的位置
select locate('my','hello my name is zhang');

-- 查询名字中有Li的员工信息
select * from emp where locate('Li',ename) != 0;

-- 查询中文名字中第三个字是'芳'的员工
select * from emp where locate('芳',ename)=3;

c、LEFT(str,len):左截取

d、RIGHT(str,len):右截取
select left('李元芳',1),right('李元芳',1);

-- 查询公司中姓李的员工
select * from emp where ename like '李%';
select * from emp where locate('李',ename)=1;
select * from emp where left(ename,1)='李';


e、SUBSTRING(str,pos,len)
-- 截取所有员工名字中除了第一个字符以外的字符
select ename,substring(ename,2,length(ename)-1) from emp;

f、LTRIM(str):过滤左侧的空格

g、RTRIM(str):过滤右侧的空格

h、trim(str):过滤两侧的空格
select length(ltrim(' James')),length(rtrim('James ')),length(trim(' James '));
select * from emp where ename=trim(' James');

i、REPLACE(str,from_str,to_str)
-- 将名字中的字符a替换成*输出
select ename,replace(ename,'a','*') from emp;

j、REVERSE(str):将字符串颠倒

k、LOWER(str):将字符串转成小写字符串

l、UPPER(str):将字符串转成大写字符串
select lower(ename),upper(ename) from emp;

C、日期函数
a、now():当前时间

b、DAYOFWEEK(date) :求日期相对于某个时间点的天数
DAYOFMONTH(date)
DAYOFYEAR(date)


c、MONTH(date) :取部分时间
YEAR(date)
DAY(date)
HOUR(time)
MINUTE(time)
SECOND(time)

select sysdate(),now();
select DAYOFWEEK(now()),DAYOFMONTH(now()),dayofyear(now());
select year(now()),month(now()),day(now()),hour(now()),minute(now()),SECOND(now()),NOW();

-- 查询10年10月份入职的员工
select * from emp where year(hiredate)=2010 and month(hiredate)=10;

d、DATE_FORMAT(date,format) :日期格式化

-- 查询员工编号、姓名、薪水、入职时间,入职时间显示成xxxx年xx月xx日的格式
select empno,ename,sal,hiredate,DATE_FORMAT(hiredate,'%Y年%m月%d日 %H时%i分%s秒') from emp;

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

f、FROM_UNIXTIME(unix_timestamp,format):根据时间戳得到对应的时间
-- 获取当前时间距离1970-1-1 零时的秒数
select UNIX_TIMESTAMP();
-- 计算某个时间的时间戳
select UNIX_TIMESTAMP('2015-1-1');

-- 计算时间戳对应的时间
select FROM_UNIXTIME('1420041600');
select FROM_UNIXTIME('1420041600','%y年%m月%d日');

-- 计算2010-10-03到当前时间的月数
select (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP('2010-10-03')) / (60 * 60 * 24 * 30 * 12);


g、TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) :两个时间的时间差
-- 计算今年已经过的月数
select round(TIMESTAMPDIFF(DAY,'2015-1-1',now()) / 30,2);

-- 计算公司中每个员工的工龄(保留1位小数)
select *,round(TIMESTAMPDIFF(MONTH,hiredate,now()) / 12,1) from emp;

-- 查询入职满3年的员工信息
select * from emp where TIMESTAMPDIFF(year,hiredate,now()) >= 3;

h、TIMESTAMPADD(unit,interval,datetime_expr):某个时间加上另外一个时间得到的日期
-- 计算100天后的今天的日期
select TIMESTAMPADD(day,100,now());

D、NULL判断函数
-- 查询员工的编号、姓名、薪水、奖金、总薪水
-- ifnull():如果第一参数不为空,显示第一参数,否则显示第二参数

-- 查询员工编号、姓名、薪水、奖金,如果薪水为null,显示0,奖金为null,显示0
select empno,ename,sal,comm,ifnull(sal,0),ifnull(comm,0) from emp;

-- 查询员工的编号、姓名、薪水、奖金、总薪水
select empno,ename,sal,comm,ifnull(sal,0) + ifnull(comm,0) from emp;

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

2、多行函数:对多行结果处理,得到一个结果
-- max、min、avg、sum、count
select max(sal),min(sal),round(avg(sal),2),sum(sal) from emp;
select count(*) from emp;

select count(*),count(sal) from emp;
select sum(sal) / count(sal),avg(sal) from emp;
select count(empno) from emp;


精彩文章推荐
【常州东方博宜多媒体课程培训】学员案例 [2014-2-18]
数据库中的触发器[2013-6-21]
数据库开发中的DML语句——常州Java培训[2013-3-16]
Java基础测试题——软件开发培训[2012-6-30]
经典创意广告——常州电脑培训案例[2012-6-20]
常州电脑培训|The Bat使用t技巧[2011-11-14]
无锡动漫设计培训-买电脑容易忽视的问题,键盘上F1~F12各键的快捷功能[2011-10-27]
常州网络工程师培训-电脑技巧问答(新手必学)二[2011-10-9]


返回顶部