Edited: Saturday 28 June 2025
MySQL 字符函数
目录
- CONCAT
- CONCAT_WS
- SUBSTR、MID、SUBSTRING
- LEFT、RIGHT
- SUBSTRING_INDEX
- LOWER、LCASE
- UPPER
- LENGTH、OCTET_LENGTH
- TRIM
- LPAD、RPAD
- REPEAT
- INSTR
- LOCATE
- FIELD
- FIND_IN_SET
- REPLACE
- REVERSE
- CHAR_LENGTH、CHARACTER_LENGTH
- BIT_LENGTH
- CONCAT
连接字符串
SELECT CONCAT(‘ab’, ‘cd’, ’ef’);
输出 abcdef ¶
函数中的任何参数为 NULL,返回结果为 NULL ¶
SELECT CONCAT(NULL, ‘ab’, ‘cd’, ’ef’);
输出 NULL ¶
- CONCAT_WS
使用指定的分隔符 separator 连接多个字符串
SELECT CONCAT_WS(’-’, ‘ab’, ‘cd’, ’ef’);
输出 ab-cd-ef ¶
如果分隔符为 NULL,返回结果为 NULL ¶
SELECT CONCAT_WS(NULL, ‘ab’, ‘cd’, ’ef’);
3. SUBSTR、MID、SUBSTRING
SUBSTRING(str,pos,len) 函数都可以用于返回从指定位置 pos 开始的子串,len 表示返回子串的长度;pos 为 0 表示返回空字符串。
SELECT SUBSTRING(‘abcdef’, 1, 3);
输出 abc ¶
SELECT SUBSTR(‘abcdef’, 1, 3);
输出 abc ¶
SELECT MID(‘abcdef’, 1, 3);
输出 abc ¶
- LEFT、RIGHT
LEFT(str,len)函数返回字符串 str 左侧的 len 个字符,RIGHT(str,len)函数返回字符串 str 右侧的 len 个字符。
SELECT LEFT(‘abcdef’, 3);
输出 abc ¶
SELECT RIGHT(‘abcdef’, 3);
输出 def ¶
- SUBSTRING_INDEX
SUBSTRING_INDEX(str,delim,count)函数返回第 count 个分隔符 delim 之前的子串。
SELECT SUBSTRING_INDEX(‘ab,c,def’, ‘,’, 2);
输出 ab,c ¶
- LOWER、LCASE
SELECT LOWER(‘MySQL字符串函数’);
输出 mysql字符串函数 ¶
SELECT LCASE(‘MySQL字符串函数’);
输出 mysql字符串函数 ¶
SELECT LOWER(CONVERT(BINARY ‘MySQL字符串函数’ USING utf8mb4));
输出 mysql字符串函数 ¶
- UPPER
SELECT UPPER(‘MySQL字符串函数’);
输出 MYSQL字符串函数 ¶
- LENGTH、OCTET_LENGTH
函数用于返回字符串的字节长度【一个汉字字符占用 3 个字节】
SELECT LENGTH(‘MySQL字符串函数’);
输出 20 ¶
SELECT OCTET_LENGTH(‘MySQL字符串函数’);
输出 20 ¶
- TRIM
TRIM([remstr FROM] str)函数用于返回删除字符串 str 两侧所有 remstr 字符串之后的子串,remstr 默认为空格。
两侧去空格 ¶
SELECT TRIM(’ abcdef ‘);
输出 abcdef ¶
SELECT TRIM(’-’ FROM ‘–MySQL字符串函数–’);
输出 MySQL字符串函数 ¶
- LPAD、RPAD
LPAD(str,len,padstr)函数表示字符串 str 的左侧使用 padstr 进行填充,直到长度为 len;RPAD(str,len,padstr)函数表示在字符串 str 的右侧使用 padstr 进行填充,直到长度为 len。当字符串 str 的长度大于 len 时,相当于从右侧截断字符串。
SELECT LPAD(286, 12, ‘0’);
输出 000000000286 ¶
SELECT RPAD(286, 5, ‘0’);
输出 28600 ¶
- REPEAT
REPEAT(str,count)函数用于将字符串 str 复制 count 次并返回结果。
SELECT REPEAT(‘abc-’, 2);
输出 abc-abc- ¶
- INSTR
INSTR(str,substr)函数用于返回子串 substr 在字符串 str 中第一次出现的索引位置,没有找到子串时返回 0。
SELECT INSTR(‘MySQL字符串函数’, ‘字符串’);
输出 6 ¶
- LOCATE
LOCATE(substr,str)函数也可以用于返回子串 substr 在字符串 str 中第一次出现的索引位置,和 INSTR(str,substr) 函数唯一的不同就是参数的顺序相反。
LOCATE(substr,str,pos)函数返回子串 substr 在字符串 str 中从位置 pos 开始第一次出现的索引位置
SELECT LOCATE(‘字符串’, ‘MySQL字符串函数’);
输出 6 ¶
SELECT LOCATE(‘字符串’, ‘MySQL字符串函数’, 7);
输出 0 ¶
- FIELD
FIELD(str,str1,str2,str3,…) 函数返回字符串 str 在后续字符串列表中出现的位置,没有找到时返回 0。
SELECT FIELD(‘李四’, ‘张三’, ‘李四’, ‘王五’);
输出 2 ¶
- FIND_IN_SET
FIND_IN_SET(str,strlist) 函数返回字符串 str 在列表字符串 strlist 中出现的位置,strlist 由 N 个子串使用逗号分隔组成。
SELECT FIND_IN_SET(‘李四’, ‘张三,李四,王五’)
输出 2 ¶
- REPLACE
REPLACE(str,from_str,to_str)函数用于将字符串 str 中所有的 from_str 替换为 to_str,返回替换后的字符串。
INSERT(str,pos,len,newstr)函数用于在字符串 str 的指定位置 pos 之后插入子串 newstr,替换随后的 len 个字符。
SELECT REPLACE(‘MySQL字符串函数’, ‘字符串’, ‘日期’);
输出 MySQL日期函数 ¶
SELECT INSERT(‘MySQL字符串函数’, 6, 3, ‘日期’);
输出 MySQL日期函数 ¶
- REVERSE
REVERSE(str)函数用于将字符串 str 中的字符顺序进行反转。
SELECT REVERSE(‘abcdefg’);
输出 gfedcba ¶
- CHAR_LENGTH、CHARACTER_LENGTH
函数用于返回字符串的字符长度,也就是字符个数
SELECT CHAR_LENGTH(‘MySQL字符串函数’);
输出 10 ¶
SELECT CHARACTER_LENGTH(‘MySQL字符串函数’);
输出 10 ¶
- BIT_LENGTH
函数用于返回字符串的比特长度(比特数量)
SELECT BIT_LENGTH(‘MySQL字符串函数’);
输出 160 ¶
SELECT BIT_LENGTH(‘MySQL’);
输出 40 ¶