一、MySQL字符串函数基础回顾
在MySQL中,字符串函数用于处理文本数据,常见场景包括数据拼接、格式转换、清洗等。以下是核心函数速览:
函数名 | 作用说明 | 基础示例(独立运行) |
---|---|---|
CONCAT(s1,s2) | 拼接多个字符串 | SELECT CONCAT('heel','test'); |
LOWER(str) | 转换为小写 | SELECT LOWER('HellOW''test'); |
UPPER(str) | 转换为大写 | SELECT UPPER('HellOW''test'); |
LPAD(str, len, pad) | 左填充至指定长度 | SELECT LPAD('set', 5, '5'); |
RPAD(str, len, pad) | 右填充至指定长度 | SELECT RPAD('set', 5, '5'); |
TRIM(str) | 去除首尾空格 | SELECT TRIM(' ss sd '); |
SUBSTRING(str, pos, len) | 截取子串(pos从1开始) | SELECT SUBSTRING('test dsfdsf', 1, 5); |
LENGTH(str) | 计算字符串长度 | - |
REPLACE(str, old, new) | 替换子串 | - |
二、基于emp表的实战练习(10个练习题)
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (`id` int(11) NULL DEFAULT NULL COMMENT '编号',`workno` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工号',`name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',`gender` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',`age` tinyint(3) UNSIGNED NULL DEFAULT NULL COMMENT '年龄',`idcard` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证号',`workaddress` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工作地址',`entrydate` date NULL DEFAULT NULL COMMENT '入职时间'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES (1, '1', '柳岩', '女', 20, '123456789012345678', '北京', '2000-01-01');
INSERT INTO `emp` VALUES (2, '2', '张无忌', '男', 18, '123456789012345678', '北京', '2005-09-01');
INSERT INTO `emp` VALUES (3, '3', '韦一笑', '男', 38, '123456789712345670', '上海', '2005-08-01');
INSERT INTO `emp` VALUES (4, '4', '赵六', '女', 38, '123456757123845670', '北京', '2009-12-01');
INSERT INTO `emp` VALUES (5, '5', '小昭', '女', 16, '123456789012345678', '上海', '2007-07-01');
INSERT INTO `emp` VALUES (6, '6', '杨逍', '男', 28, '12345678912345678', '北京', '2006-01-01');
INSERT INTO `emp` VALUES (7, '7', '常威', '男', 40, '123456789712345670', '北京', '2005-05-01');
INSERT INTO `emp` VALUES (8, '8', '黛绮丝', '女', 35, '1234561517123645670', '北京', '2010-08-01');
INSERT INTO `emp` VALUES (9, '9', '周芷若', '女', 48, '123456789012345678', '北京', '2013-04-01');
INSERT INTO `emp` VALUES (10, '10', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01');
INSERT INTO `emp` VALUES (11, '11', '张士诚', '男', 55, '123456789712345670', '江苏', '2013-05-01');
INSERT INTO `emp` VALUES (12, '12', '常遇春', '男', 82, '123444675715245678', '北京', '2004-02-01');
INSERT INTO `emp` VALUES (13, '13', '张三丰', '男', 58, '123456789012345678', '江苏', '2002-09-11');
INSERT INTO `emp` VALUES (14, '14', '灭绝', '女', 65, '123456719012345670', '西安', '2019-05-01');
INSERT INTO `emp` VALUES (15, '15', '胡青牛', '男', 70, '12345676971234567X', '西安', '2018-04-01');
INSERT INTO `emp` VALUES (16, '16', '周芷若', '女', 18, NULL, '北京', '2012-06-01');SET FOREIGN_KEY_CHECKS = 1;
案例1:拼接员工姓名和部门ID
需求:将员工姓名与部门ID用 -
连接(如 张三-1
)
SELECT CONCAT(name, '-', dept_id) AS 员工信息 FROM emp;
案例2:姓名转全小写
需求:统一显示员工姓名的小写形式
SELECT LOWER(name) AS 小写姓名 FROM emp;
案例3:姓名转全大写
需求:统一显示员工姓名的大写形式
SELECT UPPER(name) AS 大写姓名 FROM emp;
案例4:左填充员工ID为5位
需求:将员工ID左填充 0
,确保固定5位(如 1
→ 00001
)
SELECT LPAD(id, 5, '0') AS 填充ID FROM emp;
案例5:右填充姓名至10字符
需求:将姓名右填充 *
,补足10个字符(如 张三
→ 张三********
)
SELECT RPAD(name, 10, '*') AS 填充姓名 FROM emp;
案例6:清洗姓名首尾空格
需求:去除姓名字段可能存在的首尾空格
SELECT TRIM(name) AS 清洗后姓名 FROM emp;
案例7:截取姓名前2个字符
需求:提取姓名的前2个字符(假设为中文姓名)
SELECT SUBSTRING(name, 1, 2) AS 姓名缩写 FROM emp;
案例8:统计姓名长度
需求:计算每个员工姓名的字符长度
SELECT name, LENGTH(name) AS 姓名长度 FROM emp;
案例9:替换姓名关键字
需求:将姓名中所有“张”姓替换为“魏”姓(演示批量替换)
SELECT REPLACE(name, '张', '魏') AS 替换后姓名 FROM emp;
三、总结
字符串函数是MySQL数据处理的核心工具,通过 拼接、转换、清洗、截取 等操作,可高效处理文本数据。结合实际业务表(如 emp
员工表)练习,更易理解函数在真实场景的价值。
建议拓展练习:
- 结合
WHERE
条件筛选后处理(如仅清洗特定部门的姓名); - 嵌套使用函数(如先
TRIM
再CONCAT
)。
发布到CSDN的技巧
- 标题优化:加入关键词,如
MySQL字符串函数 实战案例 emp表
,提升搜索权重。 - 代码高亮:使用Markdown代码块(```sql)包裹SQL,增强可读性。
- 互动引导:结尾添加“欢迎留言交流你的SQL练习心得!”,促进互动。
- 封面图:搭配简约的“MySQL函数”主题图(可通过Canva制作),提升文章吸引力。
这样整理后,内容结构清晰,既有基础讲解,又有实战案例,适合CSDN的技术分享风格。# MySQL字符串函数实战:10个案例掌握核心用法(基于emp表)
引言
在数据处理场景中,字符串函数 是清洗、格式化、拼接文本的核心工具。无论是员工信息整理、报表生成还是日志分析,掌握字符串函数都能大幅提升效率。本文结合 emp
员工表,通过 10个实战案例 带你掌握MySQL字符串函数的核心用法!
一、基础字符串函数速览
先快速回顾常用字符串函数的语法和作用:
函数名 | 作用说明 | 基础示例(可直接运行) |
---|---|---|
CONCAT(s1, s2, ...) | 拼接多个字符串 | SELECT CONCAT('Hello', 'MySQL'); |
LOWER(str) | 转换为全小写 | SELECT LOWER('HeLLo'); |
UPPER(str) | 转换为全大写 | SELECT UPPER('worLD'); |
LPAD(str, len, pad) | 左填充至指定长度 | SELECT LPAD('123', 5, '0'); |
RPAD(str, len, pad) | 右填充至指定长度 | SELECT RPAD('123', 5, '0'); |
TRIM(str) | 去除首尾空格 | SELECT TRIM(' MySQL '); |
SUBSTRING(str, pos, len) | 截取子串(pos 从1开始) | SELECT SUBSTRING('ABCDEF', 2, 3); |
LENGTH(str) | 计算字符串长度 | SELECT LENGTH('MySQL'); |
REPLACE(str, old, new) | 替换子串 | SELECT REPLACE('MySQL', 'My', 'Our'); |
二、基于emp
表的实战练习(9个核心案例)
假设 emp
表结构:
CREATE TABLE emp (id INT COMMENT '员工ID',name VARCHAR(20) COMMENT '姓名',dept_id INT COMMENT '部门ID'
);
案例1:拼接姓名与部门ID
需求:将员工姓名和部门ID用 -
连接(如 张三-1
)
SELECT CONCAT(name, '-', dept_id) AS 员工信息 FROM emp;
案例2:姓名转全小写
需求:统一显示员工姓名的小写形式
SELECT LOWER(name) AS 小写姓名 FROM emp;
案例3:姓名转全大写
需求:统一显示员工姓名的大写形式
SELECT UPPER(name) AS 大写姓名 FROM emp;
案例4:左填充员工ID为5位
需求:将员工ID左填充 0
,确保固定5位(如 1
→ 00001
)
SELECT LPAD(id, 5, '0') AS 填充ID FROM emp;
案例5:右填充姓名至10字符
需求:将姓名右填充 *
,补足10个字符(如 张三
→ 张三********
)
SELECT RPAD(name, 10, '*') AS 填充姓名 FROM emp;
案例6:清洗姓名首尾空格
需求:去除姓名字段可能存在的首尾空格
SELECT TRIM(name) AS 清洗后姓名 FROM emp;
案例7:截取姓名前2个字符
需求:提取姓名的前2个字符(假设为中文姓名)
SELECT SUBSTRING(name, 1, 2) AS 姓名缩写 FROM emp;
案例8:统计姓名长度
需求:计算每个员工姓名的字符长度
SELECT name, LENGTH(name) AS 姓名长度 FROM emp;
案例9:替换姓名关键字
需求:将姓名中所有“张”姓替换为“魏”姓(演示批量替换)
SELECT REPLACE(name, '张', '魏') AS 替换后姓名 FROM emp;
三、进阶拓展思路
-
结合条件筛选:
仅处理特定部门的员工:SELECT CONCAT(name, '-', dept_id) FROM emp WHERE dept_id = 1; -- 仅技术部
-
函数嵌套使用:
先清洗空格,再拼接:SELECT CONCAT(TRIM(name), '-', dept_id) FROM emp;
-
与聚合函数结合:
统计不同长度的姓名分布:SELECT LENGTH(name) AS 姓名长度, COUNT(*) AS 人数 FROM emp GROUP BY LENGTH(name);
总结
字符串函数是MySQL数据处理的“瑞士军刀”,通过 拼接、转换、清洗、截取 等操作,可高效处理文本数据。结合实际业务表(如 emp
员工表)练习,更易理解函数在真实场景的价值。
拓展建议:
- 尝试处理更复杂的业务场景(如手机号脱敏、地址格式化);
- 结合
WHERE
条件和分组统计,深化函数应用。
欢迎留言交流你的SQL练习心得! 🚀
本文同步发布于CSDN,原创内容,转载请注明出处。
关注作者,获取更多MySQL实战技巧!