programming/mysql

字符函数
Edited: Saturday 28 June 2025

MySQL 字符函数
目录

  1. CONCAT
  2. CONCAT_WS
  3. SUBSTR、MID、SUBSTRING
  4. LEFT、RIGHT
  5. SUBSTRING_INDEX
  6. LOWER、LCASE
  7. UPPER
  8. LENGTH、OCTET_LENGTH
  9. TRIM
  10. LPAD、RPAD
  11. REPEAT
  12. INSTR
  13. LOCATE
  14. FIELD
  15. FIND_IN_SET
  16. REPLACE
  17. REVERSE
  18. CHAR_LENGTH、CHARACTER_LENGTH
  19. BIT_LENGTH
  20. CONCAT
    连接字符串

SELECT CONCAT(‘ab’, ‘cd’, ’ef’);

输出 abcdef

函数中的任何参数为 NULL,返回结果为 NULL

SELECT CONCAT(NULL, ‘ab’, ‘cd’, ’ef’);

输出 NULL

  1. 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

  1. LEFT、RIGHT
    LEFT(str,len)函数返回字符串 str 左侧的 len 个字符,RIGHT(str,len)函数返回字符串 str 右侧的 len 个字符。

SELECT LEFT(‘abcdef’, 3);

输出 abc

SELECT RIGHT(‘abcdef’, 3);

输出 def

  1. SUBSTRING_INDEX
    SUBSTRING_INDEX(str,delim,count)函数返回第 count 个分隔符 delim 之前的子串。

SELECT SUBSTRING_INDEX(‘ab,c,def’, ‘,’, 2);

输出 ab,c

  1. LOWER、LCASE
    SELECT LOWER(‘MySQL字符串函数’);

输出 mysql字符串函数

SELECT LCASE(‘MySQL字符串函数’);

输出 mysql字符串函数

SELECT LOWER(CONVERT(BINARY ‘MySQL字符串函数’ USING utf8mb4));

输出 mysql字符串函数

  1. UPPER
    SELECT UPPER(‘MySQL字符串函数’);

输出 MYSQL字符串函数

  1. LENGTH、OCTET_LENGTH
    函数用于返回字符串的字节长度【一个汉字字符占用 3 个字节】

SELECT LENGTH(‘MySQL字符串函数’);

输出 20

SELECT OCTET_LENGTH(‘MySQL字符串函数’);

输出 20

  1. TRIM
    TRIM([remstr FROM] str)函数用于返回删除字符串 str 两侧所有 remstr 字符串之后的子串,remstr 默认为空格。

两侧去空格

SELECT TRIM(’ abcdef ‘);

输出 abcdef

SELECT TRIM(’-’ FROM ‘–MySQL字符串函数–’);

输出 MySQL字符串函数

  1. 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

  1. REPEAT
    REPEAT(str,count)函数用于将字符串 str 复制 count 次并返回结果。

SELECT REPEAT(‘abc-’, 2);

输出 abc-abc-

  1. INSTR
    INSTR(str,substr)函数用于返回子串 substr 在字符串 str 中第一次出现的索引位置,没有找到子串时返回 0。

SELECT INSTR(‘MySQL字符串函数’, ‘字符串’);

输出 6

  1. 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

  1. FIELD
    FIELD(str,str1,str2,str3,…) 函数返回字符串 str 在后续字符串列表中出现的位置,没有找到时返回 0。

SELECT FIELD(‘李四’, ‘张三’, ‘李四’, ‘王五’);

输出 2

  1. FIND_IN_SET
    FIND_IN_SET(str,strlist) 函数返回字符串 str 在列表字符串 strlist 中出现的位置,strlist 由 N 个子串使用逗号分隔组成。

SELECT FIND_IN_SET(‘李四’, ‘张三,李四,王五’)

输出 2

  1. 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日期函数

  1. REVERSE
    REVERSE(str)函数用于将字符串 str 中的字符顺序进行反转。

SELECT REVERSE(‘abcdefg’);

输出 gfedcba

  1. CHAR_LENGTH、CHARACTER_LENGTH
    函数用于返回字符串的字符长度,也就是字符个数

SELECT CHAR_LENGTH(‘MySQL字符串函数’);

输出 10

SELECT CHARACTER_LENGTH(‘MySQL字符串函数’);

输出 10

  1. BIT_LENGTH
    函数用于返回字符串的比特长度(比特数量)

SELECT BIT_LENGTH(‘MySQL字符串函数’);

输出 160

SELECT BIT_LENGTH(‘MySQL’);

输出 40