MySQL常用字符串函数包括:CONCAT拼接、SUBSTRING截取、LEFT/RIGHT取左右字符、TRIM去空格或指定字符;UPPER/LOWER转大小写;REPLACE替换;INSTR/POSITION查找位置;LENGTH与CHAR_LENGTH区分字节与字符长度;STRCMP比较字符串。
MySQL 提供了丰富的字符串函数,用于处理和操
作文本数据。掌握常用函数能让你更高效地清洗、提取、拼接和判断字符串。
常用字符串处理函数
这些函数最常用于字段内容的转换与提取:
- CONCAT(str1, str2, ...):拼接多个字符串,遇到 NULL 返回 NULL;可用 CONCAT_WS(separator, str1, str2, ...) 指定分隔符(如 CONCAT_WS('-', 'a', 'b', 'c') 返回 'a-b-c')
- SUBSTRING(str, pos[, len]) 或 SUBSTR():从位置 pos(从 1 开始)截取 len 个字符;省略 len 则截取到末尾(如 SUBSTRING('hello', 2, 3) 返回 'ell')
- LEFT(str, len) 和 RIGHT(str, len):分别取左边/右边 len 个字符
- TRIM([BOTH|LEADING|TRAILING] [remstr] FROM str):默认去掉首尾空格;可指定字符,如 TRIM('_' FROM '__abc__') 返回 'abc'
大小写与格式转换
统一文本格式便于比对或展示:
- UPPER(str) / LOWER(str):转为大写或小写(对中文无效,仅影响英文字母)
- INITCAP(str) 不是 MySQL 原生函数(常见于 Oracle/PostgreSQL),MySQL 中需用组合方式模拟首字母大写(如结合 SUBSTRING + UPPER + LOWER)
- REPLACE(str, from_str, to_str):全局替换,区分大小写(如 REPLACE('MySQL is cool', 'cool', 'awesome') → 'MySQL is awesome')
查找与判断类函数
用于条件筛选或逻辑判断:
- INSTR(str, substr):返回子串首次出现的位置(从 1 开始),未找到返回 0;等价于 LOCATE(substr, str)
- POSITION(substr IN str):标准 SQL 写法,同 INSTR
- LENGTH(str):返回字节长度(中文通常占 3 字节,取决于字符集);CHAR_LENGTH(str) 返回字符个数(推荐用于统计“几个字”)
- STRCMP(str1, str2):比较两字符串,相等返回 0,str1
实战小技巧
写 SQL 时注意这些细节:
- 所有字符串函数对 NULL 敏感:任意参数为 NULL,多数函数结果为 NULL(CONCAT 就是典型);可用 IFNULL() 或 COALESCE() 预处理
- 位置参数一律从 1 开始,不是 0(和编程语言不同,容易出错)
- 模糊匹配优先用 LIKE 或 REGEXP;字符串函数适合确定结构的提取(如固定长度编号、邮箱用户名部分)
- 在 WHERE 或 ORDER BY 中频繁使用函数可能导致索引失效,大数据量时注意优化(例如避免 WHERE UPPER(name) = 'ABC',应确保字段本身已规范存储)








