MySQL里那些字符串处理函数,平时用得多也挺实用的分享一下
- 问答
- 2026-01-19 21:22:04
- 2
MySQL里的字符串处理函数非常多,但日常工作中我们频繁用到的可能就是那么十几个,掌握这些函数,能让你在查询数据、清洗数据或者进行数据转换时事半功倍,下面我就把这些实用的函数分门别类地介绍一下。
最基本也最常用的,连接字符串,我们有CONCAT函数,这个函数的作用就是把两个或者多个字符串拼接到一起,你有一个users表,里面有first_name和last_name两个字段,你想查询出用户的全名,就可以这么写:SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;,它非常灵活,可以连接任意数量的字符串,如果参与连接的字符串中有NULL,那么整个结果都会变成NULL,这点要注意,和它类似的有CONCAT_WS,这个函数的意思是“With Separator”,它第一个参数是指定的分隔符,然后把后面的多个字符串用这个分隔符连接起来,它的一个好处是,如果中间的某个字符串是NULL,它会被忽略掉,不会导致整个结果变成NULL,比如SELECT CONCAT_WS('-', '2023', NULL, '05'),结果会是2023-05。

然后是关于字符串长度和空值的判断。LENGTH函数返回的是字符串的字节长度,而CHAR_LENGTH(或者它的简写CHARACTER_LENGTH)返回的是字符个数,这在对中文这类多字节字符处理时有重要区别,比如字符串‘你好’,LENGTH返回是6(UTF8编码下每个中文占3字节),而CHAR_LENGTH返回是2,所以通常更关心字符数时,建议用CHAR_LENGTH。IFNULL函数虽然不完全是字符串函数,但经常一起用,它用来判断一个字段是否为NULL,如果是就返回你指定的替代值,比如SELECT IFNULL(nickname, '未知昵称') FROM users,这样就不会返回难看的NULL了。
接下来是截取和提取部分字符串的函数,这是重头戏。SUBSTRING函数(或者它的同义词SUBSTR)用于从指定位置开始截取指定长度的子串,它的用法有几种:SUBSTRING(str, pos)是从位置pos开始截取到末尾;SUBSTRING(str, pos, len)是从位置pos开始截取len个字符的长度,这里要注意,MySQL中字符串的位置是从1开始的,不是0,这个函数在提取身份证号中的出生日期、或者处理有固定格式的编码时非常有用。

LEFT和RIGHT函数是SUBSTRING的简便形式。LEFT(str, len)返回字符串最左边的len个字符,RIGHT(str, len)返回最右边的len个字符,比如你想看一个文件名的后缀,可以用RIGHT(filename, 3)来提取最后三位(txt’)。
查找和定位的函数也很关键。LOCATE函数(或者INSTR函数,参数顺序相反)用于返回子串在字符串中第一次出现的位置,比如LOCATE('abc', '12abcde')会返回3,如果找不到就返回0,这个函数经常和SUBSTRING配合使用,进行更复杂的字符串解析。POSITION函数和LOCATE(substr IN str)的语法效果一样。

字符串的替换和删除操作。REPLACE函数用于将字符串中所有出现的指定子串替换为另一个子串,它的语法是REPLACE(str, from_str, to_str),这是个全局替换,非常强大,比如清理数据中的多余空格:REPLACE(description, ' ', '')。TRIM函数用于去掉字符串首尾的指定字符(默认是空格),它有更精细的用法:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str),比如TRIM(LEADING '0' FROM product_code)可以去掉产品编码前面可能存在的0。
大小写转换是最简单的了。LOWER(或LCASE)把字符串转为小写,UPPER(或UCASE)把字符串转为大写,这在做不区分大小写的比较或统一数据格式时常用。
填充和空格处理,有时候我们需要让字符串保持固定的长度,这时就用到了LPAD和RPAD函数。LPAD(str, len, padstr)表示用字符串padstr在str的左边填充,直到总长度达到len。RPAD则是在右边填充,这在生成固定宽度的报表或者格式化输出时很有用。
最后提一下其他几个杂项但实用的函数。REVERSE函数就是把字符串倒过来写,有时用于一些特殊的校验或算法。REPEAT函数重复一个字符串指定的次数,比如REPEAT('Ha', 3)得到‘HaHaHa’。INSERT函数可以在指定位置插入字符串,同时覆盖掉原位置的一些字符,语法稍复杂但功能强大。
这些函数单个使用不难,但真正的威力在于你可以把它们嵌套组合起来,应对各种复杂的字符串处理场景,你可以先用LOCATE找到某个分隔符的位置,然后用SUBSTRING截取前半部分,再用TRIM去掉空格,最后用UPPER转为大写,多练习和组合使用,就能大大提升你处理文本数据的效率。
本文由邝冷亦于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/83892.html
