MySql之函数

目录

一、常用函数

二、条件判断函数


一、常用函数

 1.日期函数
 1 NOW():获取当前日期和时间

 select now();


 2 DAY():获取日期中的天

 

	 select day(now())


 3 MONTH():获取日期中的月

 

 select month(now())


 4 YEAR():获取日期中的年

 

 select year(now())

 


 5 日期转换函数DATE_FORMAT()/STR_TO_DATE()

SELECT NOW(),DATE_FORMAT(NOW(),'%Y年%m月%d日')

 查询各学生的年龄,只按年份来算

select s.*,YEAR(now())-year(s.sage) from t_student s

按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

select s.*,YEAR(now())-year(s.sage)+if(month(now())<MONTH(s.sage),-1,0) from t_student s

查询本月过生日的学生

select * from t_student where MONTH(now()) = MONTH(sage);

查询下月过生日的学生

select * from t_student where MONTH(now())+1 = MONTH(sage);
select * from t_student where date_add(NOW(), interval 1 MONTH) = MONTH(sage)

1) UPPER()/LOWER():大小写互转

select upper(' beautiful girl ')
select lower(' GOOD  MAN')

 

 

 


   2) REPLACE():搜索并替换字符串中的子字符串

select 'yang-can-xia',REPLACE('yang-can-xia','-',' ')

 


   3) SUBSTRING():从具有特定长度的位置开始的最一个子字符串

	 SELECT SUBSTRING('zhang san is a person',1,5)
	 SELECT SUBSTRING('zhang san is a person',5)	


   4) TRIM():去除前后空格


   5) LENGTH():获取字符串长度

  SELECT LENGTH(' zhang san is a person '),LENGTH(TRIM('zhang san is a person'))


   6) CONCAT():合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个

 3.数字函数

select CONCAT('yan jia yang','i love you')

1FLOOP:向下取整

2CELE:向上取整

3 ROUND:四舍五入

select FLOOR(-3.14),FLOOR(3.14), CEIL(-3.14), CEIL(3.14),round(-3.14),round(3.14)

 

二、条件判断函数

 1.if


    IF(expr,v1,v2)
   如果expr是TRUE则返回v1,否则返回v2

SELECT
	s.sid,
	s.sname,
	sum( IF ( sc.cid = '01', sc.score, 0 ) ) 语文,
	sum( IF ( sc.cid = '02', sc.score, 0 ) ) 数学,
	sum( IF ( sc.cid = '03', sc.score, 0 ) ) 英语 
FROM
	t_student s
	LEFT JOIN t_score sc ON s.sid = sc.sid
	GROUP BY s.sid,s.sname

  2.ifnull

    IFNULL(v1,v2)
   如果v1不为NULL,则返回v1,否则返回v2

        3.case  ...when....

CASE expr WHEN v1 THEN r1 [WHEN v2 THEN v2] [ELSE rn] END
如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不想等,则返回ELSE后面的rn

SELECT
    s.sid,
    s.sname,
    sum(case when sc.cid = '01' then sc.score end) 语文,
    sum(case when sc.cid = '02' then sc.score end) 数学,
    sum(case when sc.cid = '03' then sc.score end) 英语 
FROM
    t_student s
    LEFT JOIN t_score sc ON s.sid = sc.sid
    GROUP BY s.sid,s.sname
SELECT
		s.*,case t1.cid
	  when '1' then '语文'
		when '2' then '数学'
		else '未知课程' end
		FROM
		(SELECT * FROM t_score WHERE cid = '1') t1,
		(SELECT * FROM t_score WHERE cid = '2') t2,
		t_student s
		WHERE
		t1.sid = t2.sid
		and t1.sid = s.sid
		AND t1.score > t2.score


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值