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个字节。