MySQL字符串函数

字符串函数是MySQL中最常用的函数之一,用于处理和操作字符串数据。MySQL提供了丰富的字符串函数,可以完成字符串的合并、截取、替换、大小写转换等各种操作。本章将详细介绍MySQL中常用的字符串函数及其用法。

字符串长度函数

MySQL提供了两个用于计算字符串长度的函数:

函数 描述 示例
LENGTH(str) 返回字符串的字节长度 LENGTH('MySQL') = 5,LENGTH('中文') = 6(UTF-8编码下)
CHAR_LENGTH(str) 返回字符串的字符数 CHAR_LENGTH('MySQL') = 5,CHAR_LENGTH('中文') = 2

字符串合并函数

用于合并多个字符串的函数:

函数 描述 示例
CONCAT(s1, s2, ...) 连接两个或多个字符串 CONCAT('Hello', ' ', 'MySQL') = 'Hello MySQL'
CONCAT_WS(x, s1, s2, ...) 使用分隔符x连接多个字符串 CONCAT_WS(',', 'a', 'b', 'c') = 'a,b,c'

字符串替换函数

用于替换字符串中指定部分的函数:

函数 描述 示例
INSERT(s1, x, len, s2) 在s1的x位置开始,替换长度为len的子串为s2 INSERT('Hello World', 7, 5, 'MySQL') = 'Hello MySQL'
REPLACE(s, s1, s2) 将s中所有的s1替换为s2 REPLACE('Hello World', 'World', 'MySQL') = 'Hello MySQL'

大小写转换函数

用于转换字符串大小写的函数:

函数 描述 示例
UPPER(str) 或 UCASE(str) 将字符串转换为大写 UPPER('mysql') = 'MYSQL'
LOWER(str) 或 LCASE(str) 将字符串转换为小写 LOWER('MySQL') = 'mysql'

字符串截取函数

用于截取字符串的函数:

函数 描述 示例
LEFT(s, n) 返回字符串s左边的n个字符 LEFT('MySQL', 3) = 'MyS'
RIGHT(s, n) 返回字符串s右边的n个字符 RIGHT('MySQL', 3) = 'SQL'
SUBSTRING(s, n, len) 返回字符串s从n位置开始的len个字符 SUBSTRING('MySQL', 2, 3) = 'ySQ'
SUBSTRING(s, n) 返回字符串s从n位置开始到结束的子串 SUBSTRING('MySQL', 3) = 'SQL'
MID(s, n, len) SUBSTRING的别名,功能相同 MID('MySQL', 2, 3) = 'ySQ'

字符串填充函数

用于填充字符串的函数:

函数 描述 示例
LPAD(s1, len, s2) 用s2在s1的左边填充,使总长度为len LPAD('123', 6, '0') = '000123'
RPAD(s1, len, s2) 用s2在s1的右边填充,使总长度为len RPAD('123', 6, '0') = '123000'

字符串去除空格函数

用于去除字符串中空格的函数:

函数 描述 示例
LTRIM(s) 去除字符串s左边的空格 LTRIM(' MySQL ') = 'MySQL '
RTRIM(s) 去除字符串s右边的空格 RTRIM(' MySQL ') = ' MySQL'
TRIM(s) 去除字符串s两边的空格 TRIM(' MySQL ') = 'MySQL'
TRIM(s1 FROM s) 去除字符串s两边的指定字符串s1 TRIM('x' FROM 'xxxMySQLxxx') = 'MySQL'

其他常用字符串函数

函数 描述 示例
REPEAT(s, n) 将字符串s重复n次 REPEAT('MySQL', 2) = 'MySQLMySQL'
SPACE(n) 返回n个空格的字符串 SPACE(5) = ' '
STRCMP(s1, s2) 比较两个字符串的大小 STRCMP('abc', 'abd') = -1,STRCMP('abc', 'abc') = 0,STRCMP('abd', 'abc') = 1
REVERSE(s) 将字符串s反转 REVERSE('MySQL') = 'LQSyM'
FIELD(s, s1, s2, ...) 返回s在列表中的位置 FIELD('c', 'a', 'b', 'c', 'd') = 3
FIND_IN_SET(s1, s2) 返回s1在以逗号分隔的字符串s2中的位置 FIND_IN_SET('c', 'a,b,c,d') = 3
MAKE_SET(x, s1, s2, ...) 根据x的二进制位返回对应的字符串,用逗号分隔 MAKE_SET(5, 'a', 'b', 'c', 'd') = 'a,c'(5的二进制是101,表示选择第1和第3个字符串)

示例:使用字符串函数

下面是一些使用字符串函数的实际示例:

-- 计算字符串长度
SELECT LENGTH('MySQL 8.0') AS byte_length, CHAR_LENGTH('MySQL 8.0') AS char_count;

-- 合并字符串
SELECT CONCAT('Hello', ' ', 'MySQL', ' ', '8.0') AS greeting;

-- 使用分隔符合并字符串
SELECT CONCAT_WS(', ', 'Apple', 'Banana', 'Orange') AS fruits;

-- 替换字符串
SELECT REPLACE('Hello World', 'World', 'MySQL') AS replaced;

-- 截取字符串
SELECT SUBSTRING('MySQL 8.0', 6, 3) AS version;

-- 大小写转换
SELECT UPPER('mysql') AS upper_case, LOWER('MYSQL') AS lower_case;

-- 去除空格
SELECT TRIM('  MySQL Database  ') AS trimmed;

-- 填充字符串
SELECT LPAD('123', 6, '0') AS padded_number;

-- 反转字符串
SELECT REVERSE('MySQL') AS reversed;

提示:在处理中文字符串时,应特别注意LENGTH()和CHAR_LENGTH()的区别。LENGTH()返回的是字符串的字节长度,而CHAR_LENGTH()返回的是字符串的字符数。在UTF-8编码下,一个中文字符通常占用3个字节。