一、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實戰技巧!