Administrator
发布于 2025-10-02 / 2 阅读
0
0

MySQL第18课:字符串函数

第14章:字符串函数

英语单词

1. uppercase ⼤写字⺟

2. lowercase ⼩写字⺟

3. left 左

4. substring: ⼦字符串

1. sub:次要的、副、⼦的

2. 副标题:subtitle

5. string 字符串

6. trim:修剪

7. reverse:相反的、翻转

8. field:字段、⽥地

9. locate:定位

1. location:地点、位置

2. local adj 本地的 当地的

10. position 位置

一、length()

1.查询字节⻓度

length()

⽤途:查询字符的字节⻓度。

语法

LENGTH(string)

参数

string:必需。字符串

返回值:整数或NUll

整数:表示字符串的⻓度

0:查询失败

示例

SELECT LENGTH("SQL Tutorial") AS LengthOfString;

字符集

gbk:使⽤2个字节存储⼀个汉字

unicode:使⽤3个字节存储⼀个汉字

二、upper()

2.⼤⼩写转换

upper()

⽤途:将英⽂字符串转为全⼤写

语法

UPPER(英⽂⽂本)

参数

英⽂⽂本:必需

示例

SELECT UPPER('Hello'); -- 输出 'HELLO'

SELECT UCASE('mysql'); -- 输出 'MYSQL'

三、LOWER()

⽤途:将英⽂字符串转为全⼩写。

语法

lower(英⽂⽂本)

参数

英⽂⽂本:必须

示例

SELECT LOWER('Hello WORLD'); -- 输出:hello world

SELECT LOWER('ÄÖÜ');

使⽤场景-- 输出:äöü(⽀持多语⾔字符)

四、trim()

⽤途:删除字符串尾随空格。

语法

参数

string:必须,要删除空格的字符串

示例

五、reverse()

4.反转字符

reverse()-- 插⼊数据时统⼀存储⼩写

INSERT INTO users (username) VALUES (LOWER('Admin123'));-- 查找忽略⼤⼩写的⽤户名

SELECT * FROM users WHERE LOWER(username) = LOWER('admin');-- 将标题转为⼩写格式

SELECT LOWER(title) AS lowercase_title FROM articles;-- 批量更新邮箱为⼩写

UPDATE employees

SET email = LOWER(email)

WHERE email REGEXP '[A-Z]'; -- 仅处理含⼤写字⺟的记录

RTRIM(string)

SELECT RTRIM("SQL Tutorial ") AS RightTrimmedString;

⽤途:反转字符串字符顺序。

语法

REVERSE(string)

参数

string:必须,要反转顺序的字符串

示例

SELECT REVERSE("SQL Tutorial");

5.⾃定义排序

field()

⽤途:返回值列表中值的索引位置。

注意:如果在值列表中找不到指定的值,则此函数将返回0。如果值为null,则此函数将返回

0。

语法

FIELD(value, val1, val2, val3, ...)

参数

value:必须,要查的值

val1:值列表

示例

SELECT FIELD("q", "s", "q", "l");-- 输出 2

6.提取字符串

left()

⽤途:从左起截取-指定⻓度字符

语法

LEFT(str, length)

参数

str:必需,指定提取的字符串

length:必需。要提取的字符数。如果此参数⼤于字符串中的字符数,则此功能将返回全

部字符串

示例:

SELECT LEFT('ABCDE', 3); -- 输出 'ABC'

right()

substring()

⽤途:从指定位置截取字符串

语法

SUBSTRING(str, start, [length])

参数

str:必需,要截取的字符串。

start :必需的。开始位置。可以是正数或负数。如果是正数,则此函数从字符串的开头

提取。如果是负数,则此函数从字符串的末端提取

[length]:可选。要提取的字符数。如果省略,将返回整个字符串(从开始位置)

示例

SELECT SUBSTRING('Hello World', 7); -- 输出 'World'

SELECT SUBSTRING('Hello World', 7, 3); -- 输出 'Wor'

locate()

7.查询字符位置

locate()

⽤途:返回⼦字符串⾸次出现的位置(可指定起始点)。如果在原始字符串中找不到⼦字符

串,则此功能返回0。⼤⼩写不敏感。

注意:如果在值列表中找不到指定的值,则此函数将返回0。如果值为null,则此函数将返回

0。

语法

LOCATE(⼦字符串, 主字符串, [start])

参数

substring:必需的。⼦字符串

string:必需的。主字符串

示例

SELECT LOCATE("3", "W3Schools.com") AS MatchPosition;

SELECT LOCATE("com", "W3Schools.com", 3) AS MatchPosition;

SELECT LOCATE('lo', 'Hello'); -- 输出 4(从第1位开始找)

SELECT LOCATE('o', 'Hello', 5); -- 输出 5

场景结果说明

start 是正整数且有效位置值返回从 start 位置后的⾸次匹配位置

start 是0或负数0⽆效参数,直接返回0

start 超出字符串⻓度0搜索范围超出实际内容

⼦字符串为空字符串 ('') 1空字符串在任何位置都被认为存在

1. 默认从第1个字符开始搜索

2. 指定从第6个字符开始搜索

3. ⼦字符串不存在时返回0

4. 指定起始位置超过字符串⻓度

关键特性

position()

SELECT LOCATE('o', 'Hello World! Welcome to MySQL.');-- 结果:5(第⼀个 'o' 的位置)

SELECT LOCATE('o', 'Hello World! Welcome to MySQL.', 6);-- 结果:8(从第6个字符开始后的第⼀个 'o' 的位置)

SELECT LOCATE('Python', 'Hello World! Welcome to MySQL.', 1);-- 结果:0(未找到)

SELECT LOCATE('o', 'Hello World! Welcome to MySQL.', 30);-- 结果:0(字符串总⻓度⼩于30)

⽤途:返回字符串中第⼀次出现的位置。如果在原始字符串中找不到⼦字符串,则此功能返回

0。

语法

POSITION(⼦字符串 IN 主字符串)

参数

substring()

必需的。在字符串中搜索的⼦字符串

string:必需的。将要搜索的原始字符串

示例

SELECT POSITION("3" IN "W3Schools.com") AS MatchPosition;

SELECT POSITION('@' IN 'user@example.com'); -- 输出 5

instr()

⽤途:instr()函数返回另⼀个字符串中⾸次出现字符串的位置。不区分⼤⼩写

语法

INSTR(主字符串, ⼦字符串)

参数

stinrg1:必需的。主字符串

sting2:必需的。⼦字符串。如果找不到字符串2,此功能返回0

示例

SELECT INSTR('Hello', 'el'); -- 输出 2

8.关键区别与适⽤场景

函数特点典型应⽤场景

UPPER/UCASE统⼀数据格式⽤户输⼊标准化、不区分⼤⼩写查

LEFT/SUBSTRING精准提取部分数据截取编码、⽇期、关键词

REVERSE反转字符顺序⽣成镜像⽂本、特殊加密逻辑

FIELD⾃定义排序优先级业务规则排序(如状态顺序)

LOCATE/INSTR⼦串位置查找(参数顺序不

同)

解析邮箱、URL、关键词定位

9.常⻅应⽤

1. 组合使⽤:

2. 处理空值:

3. 动态排序:

练习:字符串函数


评论