MySQL组成之函数

一、函数概念:一组可以直接被另一段程序调用的程序或代码。

函数分类:1.字符串函数2.数值函数3.日期函数4.流程函数

二、函数功能

(1)字符串函数函数

1.concat (s1,s2,s3...sn)字符串拼接

eg(例如):concat('Hello','MySQL'); --结果:Hello MySQL

2.LOWER(str) 把大写字符转化成小写字符

LOWER('HELLO'); --结果:hello

3.UPPER(str) 把小写字符转化成大写字符

4.LPAD(str,n,pad) 左填充字符串pad 对 str 左边填充,达到n个字符串长度

LPAD('01',5,'*'); -- '01'字符串,长度为5,不足5位字符串左侧用‘*’填充  结果:***01

5.RPAD(str,n,pad) 右填充(同上)

RPAD('01',5,'*'); -- '01'字符串,长度为5,不足5位字符串右侧用‘*’填充  结果:01***

6.TRIM(str) 去掉字符串头部和尾部的空格

TRIM('   hello mysql');  --结果:hello mysql (中间的空格不受影响)

7.SUBSTRING(str,start,len) 返回字符串str 从 start 位置起的len 个长度的字符串

SUBSTRING('hello',2,2); --结果:el (返回从第二位的‘e’开始长为2的字符串)

  (2)数值函数

1.CEIL(x) 向上取整

SELECT CEIL(2.3); --结果:3

SELECT CEIL(-2.3);--结果:-2

2.FLOOR(x) 向下取整

SELECT FLOOR(2.3); --结果:2

SELECT FLOOR(-2.3); --结果:-3

3.MOD(x,y) 返回x / y 的摸

SELECT MOD(3,4); --结果:0

4.RAND() 返回0 ~ 1内的随机数

SELECT RAND(); -- 结果:0.757139

5.ROUND(x.,y) 求参数 x 的四舍五入的值并保留 y 位小数

SELECT ROUND (2.13,2); --结果:2.13

SELECT ROUND (2.136,2); --结果:2.14

(3)日期函数

1.CURDATE() 返回当前日期

SELECT CURDATE(); -- 结果:2024-05-13

2.CURTIME() 返回当前时

SELECT CURTIME(); -- 结果:17:54:38

3.NOW() 返回当前日期和时间

SELECT NOW(); --结果:20204-05-13 17:55:02

4.YEAR(date) 获取指定日期的年份

SELECT YEAR(NNOW()); -- 结果:2024

5.MONTH(date) 获取指定日期的月份

SELECT MONTH(NOW()); --结果:5

6.DAY(date) 获取指定日期的天数

7.DATe_ADD(date,INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔 expr 后的时间值

SELECT DATE_ADD(NOW(),INTERVAL 7 DAY); -- 结果:2024-05-20 17:58:26

8.DATEDIFF(date1,date2) 返回起始时间 date1 和结束时间 date2 之间的天数

SELECT DATEDIFF('2021-12-01','2021-11-01'); -- 结果:30(两个日期之间相差20天)

(4)流程函数(可实现条件筛选)

1.IF(value,t,f)

value 为 true,返回 t,否则返回 f。

SELECT IF(true,'hello','hi'); -- 结果:hello

2.IFNULL(value1,value2)

value1 不为空,返回1,否则返回value2。

SELECT IFNULL('hello','hi'); -- 结果:hello

SELECT IFNULL(' ','default'); -- 结果:     (空的字符串)

3.CASE WHEN [value1] THEN [res1] ,[res2]... ELSE [defalut] END;

value1 为 true,返回 res1,res2...,否则返回defalut(默认值)。

SELECT name,

(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else 

'二线城市' end) as '工作地址' from emp;

-- 从emp 表中查询员工工作地址(workaddress),若是北京、上海则标记为“一线城市”,其他标记为“二线城市”。

4.CASE [expr] WHEN [value1] THEN [res1],[res2],... ELSE [default] END;

若 expr 的值等于value1,返回值 res1,res2...,否则返回default默认值。

SELECT id,name

(case when math>=85 then '优秀' when math>=60 then ‘及格’ else ‘不及格’ end) ‘数学'

(case when English>=85 then '优秀' when English>=60 then ‘及格’ else ‘不及格’ end) ‘英语' 

from score; --对score表中不同科目成绩进行分等级,大于等于85分为优秀,60到84之间为及格,小于60为不及格。

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值