MySql 函数
## 函数
- 字符串函数
- 数值函数
- 日期函数
- 流程函数
### 字符串函数
常用函数:
| 函数 | 功能 |
| ------------ | ------------ |
| CONCAT(s1, s2, ..., sn) | 字符串拼接,将 s1, s2, ..., sn 拼接成一个字符串 |
| LOWER(str) | 将字符串全部转为小写 |
| UPPER(str) | 将字符串全部转为大写 |
| LPAD(str, n, pad) | 左填充,用字符串 pad 对 str 的左边进行填充,达到 n 个字符串长度 |
| RPAD(str, n, pad) | 右填充,用字符串 pad 对 str 的右边进行填充,达到 n 个字符串长度 |
| TRIM(str) | 去掉字符串头部和尾部的空格 |
| SUBSTRING(str, start, len) | 返回从字符串 str 从 start 位置起的 len 个长度的字符串 |
使用示例:
```mysql
-- 拼接
SELECT CONCAT('Hello', 'World');
-- 小写
SELECT LOWER('Hello');
-- 大写
SELECT UPPER('Hello');
-- 左填充
SELECT LPAD('01', 5, '-');
-- 右填充
SELECT RPAD('01', 5, '-');
-- 去除空格
SELECT TRIM(' Hello World ');
-- 切片(起始索引为 1)
SELECT SUBSTRING('Hello World', 1, 5);
```
### 数值函数
常见函数:
| 函数 | 功能 |
| ------------ | ------------ |
| CEIL(x) | 向上取整 |
| FLOOR(x) | 向下取整 |
| MOD(x, y) | 返回 x/y 的模 |
| RAND() | 返回 0~1 内的随机数 |
| ROUND(x, y) | 求参数 x 的四舍五入值,保留 y 位小数 |
### 日期函数
常用函数:
| 函数 | 功能 |
| ------------ | ------------ |
| CURDATE() | 返回当前日期 |
| CURTIME() | 返回当前时间 |
| NOW() | 返回当前日期和时间 |
| YEAR(date) | 获取指定 date 的年份 |
| MONTH(date) | 获取指定 date 的月份 |
| DAY(date) | 获取指定 date 的日期 |
| DATE_ADD(date, INTERVAL expr type) | 返回一个日期/时间值加上一个时间间隔 expr 后的时间值 |
| DATEDIFF(date1, date2) | 返回起始时间 date1 和结束时间 date2 之间的天数 |
例子:
```mysql
-- DATE_ADD
SELECT DATE_ADD(NOW(), INTERVAL 70 YEAR);
```
### 流程函数
常用函数:
| 函数 | 功能 |
| ------------ | ------------ |
| IF(value, t, f) | 如果 value 为 true,则返回 t,否则返回 f |
| IFNULL(value1, value2) | 如果 value1 不为空,返回 value1,否则返回 value2 |
| CASE WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END | 如果 val1 为 true,返回 res1,... 否则返回 default 默认值 |
| CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END | 如果 expr 的值等于 val1,返回 res1,... 否则返回 default 默认值 |
例子:
```mysql
select
name,
(case when age > 30 then '中年' else '青年' end)
from employee;
select
name,
(case workaddress when '北京市' then '一线城市' when '上海市' then '一线城市' else '二线城市' end) as '工作地址'
from employee;
```
版权声明: 本文为 InfoQ 作者【秋名山码民】的原创文章。
原文链接:【http://xie.infoq.cn/article/e1fdf832feade0df49e71b2eb】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论