函数
# 字符串函数
CONCAT()
- 连接两个或多个字符串。
LOWER()
- 将字符串转换为小写。
UPPER()
- 将字符串转换为大写。
TRIM()
- 去除字符串两端的空格。
SUBSTRING()
- 提取字符串的子串。
LPAD(str, n, pad)
- 左填充
LPAD(str, n, pad)
- 右填充
-- concat
select concat('hello', ' mysql') as '打招呼';
/**
+-------------+
| 打招呼 |
+-------------+
| hello mysql |
+-------------+
*/
-- lower
select lower('HEllo') as '小写';
/**
+--------+
| 小写 |
+--------+
| hello |
+--------+
*/
-- upper
select upper('HEllo') as '大写';
/**
+--------+
| 大写 |
+--------+
| HELLO |
+--------+
*/
-- lpad, 左填充
select lpad('01',5, 'x') as '左填充';
/**
+-----------+
| 左填充 |
+-----------+
| xxx01 |
+-----------+
*/
-- rpad, 右填充
select rpad('01',5, 'x') as '右填充';
/**
+-----------+
| 右填充 |
+-----------+
| 01xxx |
+-----------+
*/
-- 去掉空格
select trim(' xx ') as '去掉空格';
/**
+--------------+
| 去掉空格 |
+--------------+
| xx |
+--------------+
*/
-- substring
select substring('hello mysql', 1, 5) as '截取字符串';
/**
+-----------------+
| 截取字符串 |
+-----------------+
| hello |
+-----------------+
*/
# 数值函数
ABS()
- 返回数的绝对值。CEIL()
或 CEILING() - 向上取整。FLOOR()
- 向下取整。ROUND()
- 四舍五入到指定的小数位数。RAND()
- 返回 0~1的随机数
select ceil(1.2) as '向上取整';
/**
+--------------+
| 向上取整 |
+--------------+
| 2 |
+--------------+
*/
select floor(1.2) as '向下取整';
/**
+--------------+
| 向下取整 |
+--------------+
| 1 |
+--------------+
*/
select mod(2,4) as 'x/y';
/**
+------+
| x/y |
+------+
| 2 |
+------+
*/
select rand() as '随机数';
/**
+----------------------+
| 随机数 |
+----------------------+
| 0.025024456926644276 |
+----------------------+
*/
select round(4.223567, 3) as '四舍五入,保留几位小数';
/**
+--------------------+
| 保留几位小数 |
+--------------------+
| 4.224 |
+--------------------+
*/
# 日期函数
NOW()
- 返回当前的日期和时间。CURDATE()
- 返回当前日期。CURTIME()
- 返回当前时间。DATE_ADD(date, interval expr type)
- 返回一个日期/时间值 加上一个时间间隔 expr 后的时间值DATEDIFF()
- 返回两个日期之间的天数差异。DAY()
,MONTH()
,YEAR()
- 分别返回日期的日、月、年部分。
select curdate();
/**
+------------+
| curdate() |
+------------+
| 2024-02-03 |
+------------+
*/
select curtime();
/**
+-----------+
| curtime() |
+-----------+
| 22:32:18 |
+-----------+
*/
select year(now());
/**
+-------------+
| year(now()) |
+-------------+
| 2024 |
+-------------+
*/
select month(now());
/**
+--------------+
| month(now()) |
+--------------+
| 2 |
+--------------+
*/
select day(now());
/**
+------------+
| day(now()) |
+------------+
| 3 |
+------------+
*/
select date_add(now(), INTERVAL 12 MONTH);
/**
+------------------------------------+
| date_add(now(), INTERVAL 12 MONTH) |
+------------------------------------+
| 2025-02-03 22:38:34 |
+------------------------------------+
*/
select datediff('2024-02-03', '2024-01-03');
/**
+--------------------------------------+
| datediff('2024-02-03', '2024-01-03') |
+--------------------------------------+
| 31 |
+--------------------------------------+
*/
# 流程函数
if(value, t,f)
,ifnull(value1, value2)
,case when then else end
,
select if(true, 'ok', 'not ok');
/**
+--------------------------+
| if(true, 'ok', 'not ok') |
+--------------------------+
| ok |
+--------------------------+
*/
select if(false, 'ok', 'not ok');
/**
+---------------------------+
| if(false, 'ok', 'not ok') |
+---------------------------+
| not ok |
+---------------------------+
*/
select ifnull('ok', 'default') -- ok
select ifnull('', 'default') -- ''
select ifnull('null', 'default') -- 'default'
select
name,
(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from emp;
/**
+--------------+--------------+
| name | 工作地址 |
+--------------+--------------+
| 柳岩666 | 一线城市 |
| 张无忌 | 一线城市 |
| 韦一笑 | 一线城市 |
| 赵敏 | 一线城市 |
| 小昭 | 一线城市 |
| 杨逍 | 一线城市 |
| 范瑶 | 一线城市 |
| 黛绮丝 | 二线城市 |
| 范凉凉 | 一线城市 |
| 陈友谅 | 一线城市 |
| 张士诚 | 二线城市 |
| 常遇春 | 一线城市 |
| 张三丰 | 二线城市 |
| 灭绝 | 二线城市 |
| 胡青牛 | 二线城市 |
| 周芷若222 | 一线城市 |
+--------------+--------------+
16 rows in set (0.00 sec)
*/