在MySQL里,字符串函数是一类用来处理文本数据的内置函数,掌握它们可以让我们在查询、统计和清洗数据时更加轻松。无论是拼接用户名、截取手机号片段,还是替换敏感词,字符串函数都能派上用场。

常见字符串函数一览
下面先列出几个最常用、也最实用的字符串函数,后面会配合示例说明。
| 函数名 | 作用说明 |
|---|---|
| length(str) | 返回字符串的字节长度 |
| char_length(str) | 返回字符串的字符个数 |
| concat(s1,s2,...) | 拼接多个字符串 |
| substring(str,pos,len) | 从指定位置截取指定长度 |
| replace(str,from,to) | 将字符串中的部分内容替换掉 |
| trim(str) | 去掉字符串两端空格 |
基础用法示例
我们先用一个用户表来演示,假设有如下表结构:
-- 创建演示表 CREATE TABLE user_info ( id INT PRIMARY KEY, username VARCHAR(50), phone VARCHAR(20) ); -- 插入示例数据 INSERT INTO user_info VALUES (1, '张三', '13800001111'), (2, '李四', '13900002222');
拼接与长度计算
如果想把用户名和手机号拼成一行展示,并顺便看看用户名占几个字符,可以这样写:
SELECT concat(username, '的手机号是', phone) AS info, char_length(username) AS name_len FROM user_info;
截取与替换
有时我们只要手机号的前三位和最后四位,中间用星号代替,可以结合 substring 和 concat 处理:
SELECT phone, concat(substring(phone, 1, 3), '****', substring(phone, 8)) AS safe_phone FROM user_info;
如果要批量把用户名里的某个字替换掉,例如把张三改成张同学,可以用 replace:
SELECT replace(username, '三', '同学') AS new_name FROM user_info WHERE username = '张三';
使用注意点
- length 返回的是字节数,中文在 utf8 下通常占 3 个字节,因此统计字符要用 char_length。
- substring 的位置从 1 开始算,不是从 0 开始。
- trim 只能去掉两端空格,想去掉中间空格需要配合 replace。
合理运用字符串函数,能让很多原本需要放到程序里处理的逻辑直接在数据库层完成,既减少代码量,也提升查询效率。
小结
MySQL 的字符串函数非常实用,本文介绍的 concat、substring、replace、trim 等足以覆盖大部分日常文本处理场景。建议在写 SQL 时多想一想是否能用内置函数解决,慢慢就能形成更简洁的查询习惯。