mysql-基础-函数
1. 字符串(string)函数
示意表:
函数 | 功能 |
---|---|
CONCAT(S1, S2,… Sn) | 字符串拼接将S1,S2,…Sn拼接成一个字符串 |
LOWER (str) | 将字符串str全部转为小写 |
UPPER (str) | 将字符串str全部转为大写 |
LPAD (str,n,内容) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 |
RPAD (str,n,内容) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 |
TRIM (str) | 去掉字符串头部和尾部的空格 |
SUBSTRING (str,start,len) | 返回从字符串str从start位置起的len个长度的字符串 |
案例:
1 | select concat ('name', 'is') ; |
由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。
比如:
1号员工的工号应该为00001update employee set worknumber = lpad(worknumber, 5, '0') ;
2. 数值函数
- 示表:
函数 | 功能 |
---|---|
CEIL (x) | 向上取整 |
FLO0R (x) | 向下取整 |
MOD (x,y) | 返回×/y的模 |
RAND () | 返回0-1内的随机数 |
ROUND (x,y) | 求参数×的四舍五入的值,保留y位小数 |
- 案例:
1 | select ceil (4.3) ; # 得:5 |
3. 日期函数
- 示表:
函数 | 功能 |
---|---|
CURDATE () | 返回当前日期例:select curdate (); >> 2024-01-16 |
CURTIME () | 返回当前时间例:select curtime (); >> 23: 45: 23 |
NOW () | 返回当前日期和时间例:select now (); >> 2024-01-16 23: 45: 23` |
YEAR (date) | 获取指定date的年份例:select year ( now()); >> 2024 |
MONTH (date) | 获取指定date的月份例:select month (now()); >> 01 |
DAY (date) | 获取指定date的日期例:select day (now()); >> 16 |
DATE_ADD (date, INTERVAL expr type) | 返回一个日期或时间值加上一个时间间隔e×pr后的时间值(当前为2024-01-16 23:45:23)例: select date_add( now(), interval 20 year ); select date_add( now(), interval 10 day ); select date_add( now(), interval 3 month ); |
DATEDlFF (date1, date2) | 返回起始时间date1和结束时间date2之间的天数例:select datediff ( '2024-01-16', '2024-01-26' ); >> 10天 |
- 案例:
查询所有员工的入职天数,并根据入职天数进行倒序排序select name, datediff ( curdate(), entrydate ) as 'date_d' from employee oder by date_d ;
4. 流程函数
- 示表:
函数 | 功能 |
---|---|
IF( value, t, f ) | 如果value(数值)为真,则返回t,否则返回f例:select if(ture, 'ok', 'error'); >> ok |
IFNULL( value1, value2) | 如果value1(数值1)不为空,返回value1,否则返回value2例: select if('ok', 'defalut') ; selct if('', 'defalut') ; selct if(null, 'defalut') ; |
CASE WHEN [val1] THEN [res1]…ELSE [defalut] END | 如果val1(值1)为真,返回res1(结果1),…否则返回default默认值例: |
CASE [expr] WHEN [val1] THEN [res1]…ELSE [defalut] END | 如果expr(表达式)的值等于val1,返回res1,…否则返回defalut默认值 |
- . 案例:
a. 查询employee表的员工姓名和工作地址 (如果是上海或北京,返回一线城市, 其他则返回二线城市)
1
2
3
4
5
6
7
8
9
10
11i. select name,
(case
when workaddress = '上海' then '一线城市' when workaddress = '北京' then '一线城市' else '二线城市'
end ) as '工作地址'
from employee;
ii. select name,
(case
workaddress when '上海' then '一线城市' when '北京' then '一线城市' else '二线城市'
end ) as '工作地址'
from employee;b. 统计班级各个学员的成绩,展示的规则如下
>=85,返回优秀
>=60,返回及格
否则,返回不及格
1 | # 建表: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 some森!