字符串函数
length ( )
返回字符串的字节长度
select length('asd'); -- 3
select length('数据库'); -- 9
不一样的编码格式,对中文的编码不一样:
utf-8
→ 3 字节gbk
→ 2 字节
查看默认字符集:
show variables like '%char%';
concat ( )
拼接字符串
select concat(`StuId`, '·', `StuName`) '学生信息' from `StuInfo`;
- 注意:
null
和任何值进行拼接,都返回null
upper ( ) & lower ( )
将字符串转换为大小写
select upper('superman'); -- SUPERMAN
select lower('SUPERMAN'); -- superman
left ( ) / right( )
截图字符串
select left('superman', 5); -- super
select right('superman', 3); -- man
substr ( ) / substring ( )
截取子字符串
substr(str1, pos);
select substr('superman', 6); -- man
substr(str1, pos, len);
select substr('superman', 1, 5); -- super
instr ( )
返回字符串第一次出现的起始索引,找不到则返回 0
select instr('supermansuperman', 'man'); -- 6
select instr('superwomen', 'man'); -- 0
trim ( )
去除字符串两边的重复字符串,默认是空格
select trim(' superman '); -- superman
select trim('x' from 'xxxxxsupermanxxxxx'); -- superman
lpad ( ) & rpad ( )
- 指定长度 > 原长度:用指定的字符串实现左(右)填充
- 指定长度 < 原长度:截取到指定长度( 3 个参数不能少
select lpad('superman', 10, '·'); -- ··superman
select lpad('superman', 5, '·'); -- super
replace ( )
替换指定的字符串
select replace('superman', 'man', 'women'); -- superwomen
insert ( )
替换指定位置上的字符串
select insert('123456', 1, 3, ''); -- 456
select insert('man', 1, 0, 'super'); -- superman
数学函数
ceil ( )
返回 >= 参数的最小整数
ceil(number, size); -- number 向上取整;保留 size 位小数
select ceil(2.5) as '正数', ceil(-2.5) as '负数'; # 3 -2
floor ( )
返回 <= 参数的最大整数
floor(number, size); -- number 向下取整;保留 size 位小数
select floor(2.5) as '正数', floor(-2.5) as '负数'; # 2 -3
round ( )
四舍五入,默认保留整数
round(number, size); -- number 四舍五入;保留 size 位小数
select round(2.5) as '正数', round(-2.5) as '负数'; # 3 -3
truncate ( )
截断数字
select truncate(1.1234, 2); -- 1.12
select truncate(1.1, 2); -- 1.1
mod ( )
取模
select mod(10, 3); -- 1
select 10 % 3;
小 tips:被除数是正数,取模为正数;被除数是负数,取模为负数。
rand ( )
返回 0~1 之间的随机数
select round(rand() * 100) as '一百以内的随机数';
sqrt ( )
开平方
select sqrt(9); -- 3
日期函数
now ( )
返回当前日期 & 时间
select now(); -- 2021-04-20 18:43:51
curdate ( )
返回当前日期
select curdate(); -- 2021-04-20
curtime ( )
返回当前时间
select curtime(); -- 18:46:51
year ( )
返回日期的年份
select year(now()); -- 2021
select year('2000-09-30'); -- 2000
month ( )
返回日期的月份
monthname()
可以返回英文的月份
select month(now()); -- 4
select monthname(now()); -- April
类似的函数还有 day()
hour()
minute()
second()
week ( )
返回 date 一年中的第几周
select week(now()); -- 16
str_to_date ( )
将指定格式的 string 日期 → 默认格式的 date
select str_to_date('09-30-2000', '%m-%d-%Y'); -- 2000-09-30
- 第 1 个参数是特定格式的 string
- 第 2 个参数是 string 对应的的格式符
- 返回的结果是默认格式的 date →
YYYY-mm-dd
date_format ( )
将 date → 指定格式的 string 日期
select date_format('2000/09/30', '%Y年%m月%d日'); -- 2000年09月30日
格式符 | 功能 |
---|---|
%Y | 4 位年份 |
%y | 2 位年份 |
%m | 月份(01 … 12) |
%c | 月份(1 … 12) |
%d | 日(01 … ) |
%H | 小时(24) |
%h | 小时(12) |
%i | 分钟(00 … 59) |
%s | 秒(00 … 59) |
dateDiff ( )
返回日期参数 date1 ~ date2 之间相隔的天数
select dateDiff(now(), '2000-09-30'); -- 7507 → 前面的日期 - 后面的日期
timeStampDiff ( )
用于计算时间戳
select timeStampDiff(year, '2000-09-30', now()) as '年龄'; # 年龄 '20' → 后面的日期 - 前面的日期
select timeStampDiff(month, '2000-09-30', now()) as '月份'; # 月份 '245' → 后面的日期 - 前面的日期
select timeStampDiff(day, '2000-09-30', now()) as '天数'; # 天数 '7485' → 后面的日期 - 前面的日期
adddate ( )
计算加上 n 天后的日期
select adddate(now(), 20); -- 2021-05-10 19:28:13
select adddate(curdate(), 20); -- 2021-05-10
date_add ( )
计算加减一段时间后的时间
select date_add(now(), interval '-30' day); # 2021-02-27 14:33:35 = 前面的日期 - 30 天
select date_add(now(), interval '-30' month); # 2018-09-29 14:34:09 = 前面的日期 - 30 月
select date_add(now(), interval '30' year); # '2051-03-29 14:36:39' = 前面的日期 + 30 年
信息查询函数
version ( )
用于查看版本号
select version(); -- 8.0.23
database ( )
查看默认数据库
select database();
user ( )
查看用户
select user(); -- root@localhost
md5 ( ) & sha ( )
返回该字符的加密形式
select md5('asd'); -- 7815696ecbf1c96e6894b779456d330e
其他函数
last_insert_id ( )
select last_insert_id() as '自增列最后一个的 id';
+ 号
MySQL 中的 + 号,只有一个功能:运算符
- 两个操作数都为数值型,则做加法运算
select 100 + 100; -- 200
- 有一方为 string,试图将其转成数值型。转换成功,则做加法运算;否则 string → 0
select '100' + 100; -- 200
select 'add' + 100; -- 100
- 有一方为 null,则直接返回 null
select null + 100; -- null
ifnull ( )
ifnull(values, default);
- 如果
values
为null
则返回default
值,否则返回values
值
select ifnull(`paid`, 0) as '花费' from `employees`;
isnull ( )
isnull(values);
如果 values
为 null
则返回 1,否则返回 0