【MySQL】03.函数
·
1. 字符串函数:
字符串函数主要用于处理 CHAR、VARCHAR 或 TEXT 类型的数据。
常用函数一览
| 函数 | 功能描述 | 返回值及格式 |
|---|---|---|
CONCAT(s1, s2, ..., sn) | 将多个参数拼接成一个完整的字符串 | 返回字符串(如:'HelloWorld') |
LOWER(str) | 将字符串中的所有字母转换为小写 | 返回字符串(如:'hello') |
UPPER(str) | 将字符串中的所有字母转换为大写 | 返回字符串(如:'HELLO') |
LPAD(str, n, pad) | 在左边填充 pad 字符,直到字符串达到长度 n | 返回填充后的字符串(如:'--01') |
RPAD(str, n, pad) | 在右边填充 pad 字符,直到字符串达到长度 n | 返回填充后的字符串(如:'01--') |
TRIM(str) | 删除字符串头部和尾部的所有空格 | 返回去空格后的字符串(如:'Hello') |
SUBSTRING(str, start, len) | 从 start 位置开始截取长度为 len 的字符串 | 返回截取后的字符串(如:'Hello') |
REPLACE(col, s, r) | 将字段中的 source 字符串替换为 replace | 返回替换后的字符串 |
使用示例
-- 1. 拼接姓名:返回字符串 'HelloWorld'
SELECT CONCAT('Hello', 'World');
-- 2. 左填充示例:返回字符串 '---01'
SELECT LPAD('01', 5, '-');
-- 3. 截取字符串(起始索引为 1):返回字符串 'Hello'
SELECT SUBSTRING('Hello World', 1, 5);
2. 数值函数:
数值函数用于处理数字运算,常用于统计、报表和计算场景。
常用函数一览
| 函数 | 功能描述 | 返回值及格式 |
|---|---|---|
CEIL(x) | 向上取整,返回大于或等于 x 的最小整数 | 返回整数 (INT)(如 CEIL(1.1) 返回 2) |
FLOOR(x) | 向下取整,返回小于或等于 x 的最大整数 | 返回整数 (INT)(如 FLOOR(1.9) 返回 1) |
MOD(x, y) | 取模/求余,返回 x/y 的余数 | 返回数值(如 MOD(5, 2) 返回 1) |
RAND() | 生成一个 0 到 1 之间的随机浮点数 | 返回浮点数 (FLOAT)(格式如:0.123456789) |
ROUND(x, y) | 对 x 进行四舍五入,保留 y 位小数 | 返回带小数的数值(如 ROUND(1.234, 2) 返回 1.23) |
3. 日期函数:
日期函数是业务开发中最常用的函数之一,精准掌握其返回的格式至关重要。
常用函数一览
| 函数 | 功能描述 | 返回值及严格格式 |
|---|---|---|
CURDATE() | 返回当前系统的日期(不含时间) | 格式为 YYYY-MM-DD(如:2024-05-02) |
CURTIME() | 返回当前系统的时间(不含日期) | 格式为 HH:MM:SS(如:14:30:00) |
NOW() | 返回当前系统的日期和时间 | 格式为 YYYY-MM-DD HH:MM:SS(如:2024-05-02 14:30:00) |
YEAR(date) | 获取指定日期的年份 | 返回整数格式(如:2024) |
MONTH(date) | 获取指定日期的月份 | 返回整数格式,范围 1-12(如:5) |
DAY(date) | 获取指定日期的具体天数 | 返回整数格式,范围 1-31(如:2) |
DATE_ADD(date, INTERVAL expr type) | 给日期加上一个时间间隔 | 格式与输入的 date 保持一致(如返回 2024-05-09) |
DATEDIFF(date1, date2) | 返回起始时间和结束时间之间的天数差 | 返回整数(如:计算得出相差 10 天,结果就是 10) |
使用示例
-- 计算 70 年后的今天是什么时候:返回格式为 YYYY-MM-DD HH:MM:SS
SELECT DATE_ADD(NOW(), INTERVAL 70 YEAR);
-- 计算两个日期相差的天数:返回整数格式 10
SELECT DATEDIFF('2024-05-12', '2024-05-02');
4. 流程函数:SQL 里的“If-Else”
流程控制函数能让你在 SQL 层面实现条件判断,其返回值类型非常灵活。
常用函数一览
| 函数 | 功能描述 | 返回值及格式 |
|---|---|---|
IF(value, t, f) | 如果 value 为 true,则返回 t,否则返回 f | 返回值的数据类型取决于 t 或 f 的类型 |
IFNULL(value1, value2) | 如果 value1 不为空,返回 value1,否则返回 value2 | 返回值的数据类型取决于 value1 或 value2 的类型 |
CASE WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END | 多分支判断。如果 val1 为 true,返回 res1,否则返回 default | 返回值的数据类型取决于 res1 或 default 的类型 |
使用示例
-- 返回格式为自定义的字符串('中年' 或 '青年')
select
name,
(case when age > 30 then '中年' else '青年' end) as '年龄段'
from employee;
-- 返回格式为自定义的字符串('一线城市' 或 '二线城市')
select
name,
(case workaddress
when '北京市' then '一线城市'
when '上海市' then '一线城市'
else '二线城市'
end) as '工作地址'
from employee;
更多推荐



所有评论(0)