1. CONCAT
连接字符串
SELECT CONCAT('ab', 'cd', 'ef');
# 输出 abcdef
# 函数中的任何参数为 NULL,返回结果为 NULL
SELECT CONCAT(NULL, 'ab', 'cd', 'ef');
# 输出 NULL
2. 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
4. LEFT、RIGHT
LEFT(str,len)函数返回字符串 str 左侧的 len 个字符,RIGHT(str,len)函数返回字符串 str 右侧的 len 个字符。
SELECT LEFT('abcdef', 3);
# 输出 abc
SELECT RIGHT('abcdef', 3);
# 输出 def
5. SUBSTRING_INDEX
SUBSTRING_INDEX(str,delim,count)函数返回第 count 个分隔符 delim 之前的子串。
SELECT SUBSTRING_INDEX('ab,c,def', ',', 2);
# 输出 ab,c
6. LOWER、LCASE
SELECT LOWER('MySQL字符串函数');
# 输出 mysql字符串函数
SELECT LCASE('MySQL字符串函数');
# 输出 mysql字符串函数
SELECT LOWER(CONVERT(BINARY 'MySQL字符串函数' USING utf8mb4));
# 输出 mysql字符串函数
7. UPPER
SELECT UPPER('MySQL字符串函数');
# 输出 MYSQL字符串函数
8. LENGTH、OCTET_LENGTH
函数用于返回字符串的字节长度【一个汉字字符占用 3 个字节】
SELECT LENGTH('MySQL字符串函数');
# 输出 20
SELECT OCTET_LENGTH('MySQL字符串函数');
# 输出 20
9. TRIM
TRIM([remstr FROM] str)函数用于返回删除字符串 str 两侧所有 remstr 字符串之后的子串,remstr 默认为空格。
# 两侧去空格
SELECT TRIM(' abcdef ');
# 输出 abcdef
SELECT TRIM('-' FROM '--MySQL字符串函数--');
# 输出 MySQL字符串函数
10. 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
11. REPEAT
REPEAT(str,count)函数用于将字符串 str 复制 count 次并返回结果。
SELECT REPEAT('abc-', 2);
# 输出 abc-abc-
12. INSTR
INSTR(str,substr)函数用于返回子串 substr 在字符串 str 中第一次出现的索引位置,没有找到子串时返回 0。
SELECT INSTR('MySQL字符串函数', '字符串');
# 输出 6
13. 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
14. FIELD
FIELD(str,str1,str2,str3,…) 函数返回字符串 str 在后续字符串列表中出现的位置,没有找到时返回 0。
SELECT FIELD('李四', '张三', '李四', '王五');
# 输出 2
15. FIND_IN_SET
FIND_IN_SET(str,strlist) 函数返回字符串 str 在列表字符串 strlist 中出现的位置,strlist 由 N 个子串使用逗号分隔组成。
SELECT FIND_IN_SET('李四', '张三,李四,王五')
# 输出 2
16. 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日期函数
17. REVERSE
REVERSE(str)函数用于将字符串 str 中的字符顺序进行反转。
SELECT REVERSE('abcdefg');
# 输出 gfedcba
18. CHAR_LENGTH、CHARACTER_LENGTH
函数用于返回字符串的字符长度,也就是字符个数
SELECT CHAR_LENGTH('MySQL字符串函数');
# 输出 10
SELECT CHARACTER_LENGTH('MySQL字符串函数');
# 输出 10
19. BIT_LENGTH
函数用于返回字符串的比特长度(比特数量)
SELECT BIT_LENGTH('MySQL字符串函数');
# 输出 160
SELECT BIT_LENGTH('MySQL');
# 输出 40