🗣 Wd提问: MySQL字符串函数
🤖 Ai回答: 这里为您整理了 MySQL 中常用的字符串函数,并按照功能分类进行说明,包含函数名、语法、描述和示例。
一、字符串连接与格式化
| 函数 | 语法 | 描述 | 示例 |
| : | : | : | : |
| CONCAT | `CONCAT(str1, str2, ...)` | 将两个或多个字符串连接成一个字符串。如果任何参数为 NULL,则返回 NULL。 | `SELECT CONCAT('Hello', ' ', 'World');` → `'Hello World'` |
| CONCAT_WS | `CONCAT_WS(separator, str1, str2, ...)` | 用指定的分隔符(separator)连接字符串。会忽略 NULL 值。 | `SELECT CONCAT_WS('-', '2023', '10', '05');` → `'2023-10-05'` <br `SELECT CONCAT_WS('-', 'A', NULL, 'B');` → `'A-B'` |
| FORMAT | `FORMAT(X, D [, locale])` | 将数字 X 格式化为 `,.` 的格式,并四舍五入到 D 位小数。可选参数 `locale` 用于设置国家格式(如 `'en_US'`)。 | `SELECT FORMAT(1234567.456, 2);` → `'1,234,567.46'` |
二、大小写转换
| 函数 | 语法 | 描述 | 示例 |
| : | : | : | : |
| LOWER / LCASE | `LOWER(str)` | 将字符串转换为小写。 | `SELECT LOWER('MySQL');` → `'mysql'` |
| UPPER / UCASE | `UPPER(str)` | 将字符串转换为大写。 | `SELECT UPPER('MySQL');` → `'MYSQL'` |
三、截取与填充
| 函数 | 语法 | 描述 | 示例 |
| : | : | : | : |
| SUBSTRING / SUBSTR | `SUBSTRING(str, pos [, len])` <br `SUBSTRING(str FROM pos FOR len)` | 从字符串 `str` 的第 `pos` 个位置开始截取长度为 `len` 的子串。位置从 1 开始。如果 `len` 省略,则截取到末尾。 | `SELECT SUBSTRING('MySQL', 3, 2);` → `'SQ'` <br `SELECT SUBSTRING('MySQL' FROM 1 FOR 2);` → `'My'` |
| LEFT | `LEFT(str, len)` | 返回字符串左边的 `len` 个字符。 | `SELECT LEFT('MySQL', 2);` → `'My'` |
| RIGHT | `RIGHT(str, len)` | 返回字符串右边的 `len` 个字符。 | `SELECT RIGHT('MySQL', 3);` → `'SQL'` |
| TRIM | `TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)` | 去除字符串首尾的指定字符(默认为空格)。 | `SELECT TRIM(' MySQL ');` → `'MySQL'` <br `SELECT TRIM(LEADING 'x' FROM 'xxxMySQLxxx');` → `'MySQLxxx'` <br `SELECT TRIM(BOTH 'ab' FROM 'abrambab');` → `'ram'` |
| LTRIM | `LTRIM(str)` | 去除字符串开始处的空格。 | `SELECT LTRIM(' MySQL');` → `'MySQL'` |
| RTRIM | `RTRIM(str)` | 去除字符串结尾处的空格。 | `SELECT RTRIM('MySQL ');` → `'MySQL'` |
| LPAD | `LPAD(str, len, padstr)` | 用字符串 `padstr` 从左边对 `str` 进行填充,直到总长度为 `len`。 | `SELECT LPAD('Hi', 5, 'ab');` → `'abaHi'` |
| RPAD | `RPAD(str, len, padstr)` | 用字符串 `padstr` 从右边对 `str` 进行填充,直到总长度为 `len`。 | `SELECT RPAD('Hi', 5, 'ab');` → `'Hiaba'` |
四、长度与位置
| 函数 | 语法 | 描述 | 示例 |
| : | : | : | : |
| LENGTH / OCTET_LENGTH | `LENGTH(str)` | 返回字符串的字节长度(取决于字符编码,如 UTF-8 中一个中文占 3 字节)。 | `SELECT LENGTH('中国');` → `6` (在 utf8mb4 中) |
| CHAR_LENGTH / CHARACTER_LENGTH | `CHAR_LENGTH(str)` | 返回字符串的字符数。 | `SELECT CHAR_LENGTH('中国');` → `2` |
| LOCATE / POSITION / INSTR | `LOCATE(substr, str [, pos])` <br `INSTR(str, substr)` <br `POSITION(substr IN str)` | 返回子串 `substr` 在字符串 `str` 中第一次出现的位置(从 1 开始)。如果没找到,返回 0。`LOCATE` 可以从指定位置 `pos` 开始查找。 | `SELECT LOCATE('SQL', 'MySQL');` → `3` <br `SELECT INSTR('MySQL', 'y');` → `2` <br `SELECT POSITION('Q' IN 'MySQL');` → `0` |
五、查找与替换
| 函数 | 语法 | 描述 | 示例 |
| : | : | : | : |
| REPLACE | `REPLACE(str, from_str, to_str)` | 将字符串 `str` 中所有的 `from_str` 替换为 `to_str`。 | `SELECT REPLACE('www.mysql.com', 'w', 'Ww');` → `'WwWwWw.mysql.com'` |
| INSERT | `INSERT(str, pos, len, newstr)` | 从字符串 `str` 的 `pos` 位置开始,替换掉 `len` 长度的字符,插入 `newstr`。 | `SELECT INSERT('What is this', 6, 2, 'are');` → `'What are this'` |
六、类型转换与比较
| 函数 | 语法 | 描述 | 示例 |
| : | : | : | : |
| STRCMP | `STRCMP(str1, str2)` | 比较两个字符串。如果 `str1` < `str2` 返回 -1,相等返回 0,`str1` `str2` 返回 1。 | `SELECT STRCMP('text', 'text2');` → `-1` <br `SELECT STRCMP('text', 'text');` → `0` |
七、其他实用函数
| 函数 | 语法 | 描述 | 示例 |
| : | : | : | : |
| REVERSE | `REVERSE(str)` | 反转字符串。 | `SELECT REVERSE('MySQL');` → `'LQSyM'` |
| REPEAT | `REPEAT(str, count)` | 将字符串 `str` 重复 `count` 次。 | `SELECT REPEAT('Ha', 3);` → `'HaHaHa'` |
| SPACE | `SPACE(N)` | 返回一个由 `N` 个空格组成的字符串。 | `SELECT CONCAT('Hello', SPACE(3), 'World');` → `'Hello World'` |
| ELT | `ELT(N, str1, str2, str3, ...)` | 返回参数列表中第 `N` 个字符串。 | `SELECT ELT(2, 'A', 'B', 'C');` → `'B'` |
| FIELD | `FIELD(str, str1, str2, str3, ...)` | 返回 `str` 在后续字符串列表中的位置(从 1 开始),找不到则返回 0。 | `SELECT FIELD('B', 'X', 'B', 'C');` → `2` |
使用技巧与注意事项
1、 NULL 处理:许多函数在接收 `NULL` 参数时会返回 `NULL`(如 `CONCAT`, `LENGTH`)。`CONCAT_WS` 是个例外,它会忽略 `NULL`。
2、 索引从 1 开始:MySQL 中字符串的位置索引通常是从 1 开始,而不是 0。
3、 字符集影响:`LENGTH()` 函数返回的是字节数,受字符编码影响。要获取字符数,请始终使用 `CHAR_LENGTH()`。
4、 函数嵌套:可以嵌套使用这些函数来完成复杂操作,例如:
sql
SELECT UPPER(CONCAT(LEFT(last_name, 1), '、', first_name)) AS initial_name
FROM users;
将 last_name 的首字母大写,然后与 first_name 连接,格式如 S、Jobs
希望这份详细的列表能帮助您更好地使用 MySQL 进行字符串操作!
📣 商家广告:





0
IP地址: 134.233.2.76
搜索次数: 0
提问时间: 2025-11-10 23:32:32
🛒 域名购买:
oa5.cn
yrnz.cn
che.red
ltkj.net
91.gold
pcks.cn
53.biz
815.red
op.gs
63.gs
❓️ 热门提问:
VPS服务商退款
机房3d可视化模型
杭州云计算培训班
ip地址服务器查询
laravel jwt
个人服务器托管
搜索seo引擎
电商平台开发建设
云服务器 dns
863机房
豌豆Ai站群搜索引擎系统
🌐 域名评估:
xphone.vote
qkpt.cn
fsbi.cn
qglt.net.cn
aa.hl.cn
uu.qh.cn
su8.hn.cn
evtol.hi.cn
aaa.xj.cn
rmpr.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
贵州传递窗
广州南沙月饼厂
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。