MySQL篇(高级字符串函数/正则表达式)(持续更新迭代)

目录

讲点一:高级字符串函数

一、简介

二、常见字符串函数

[1. CONCAT()](#1. CONCAT())

[2. SUBSTRING()](#2. SUBSTRING())

[3. LENGTH()](#3. LENGTH())

[4. REPLACE()](#4. REPLACE())

[5. TRIM()](#5. TRIM())

[6. UPPER()](#6. UPPER())

[7. LOWER()](#7. LOWER())

[8. LEFT()](#8. LEFT())

[9. RIGHT()](#9. RIGHT())

[10. INSTR()](#10. INSTR())

[11. LENTH(str)](#11. LENTH(str))

讲点二:正则表达式

一、简介

二、语法

[1. 字符类](#1. 字符类)

[2. 重复次数](#2. 重复次数)

[3. 通配符](#3. 通配符)

[4. 选择符](#4. 选择符)

[5. 分组](#5. 分组)

[6. 特殊字符](#6. 特殊字符)

[7. 任意数量](#7. 任意数量)

[8. 图解](#8. 图解)

三、示例

[1. 匹配单个字符](#1. 匹配单个字符)

[2. 匹配多个字符](#2. 匹配多个字符)

[3. 匹配重复次数](#3. 匹配重复次数)

[4. 匹配位置](#4. 匹配位置)

[5. 匹配特定字符串](#5. 匹配特定字符串)

[6. 匹配位数限制](#6. 匹配位数限制)

[7. 匹配单词](#7. 匹配单词)


讲点一:高级字符串函数

一、简介

MySQL中内置了很多字符串函数,常用的几个如下:

注意:以下只列举了常用函数,其余查看官方文档

官方文档:MySQL :: MySQL 8.0 参考手册 :: 12.8 字符串函数和运算符

二、常见字符串函数

1. CONCAT()

CONCAT()函数用于连接两个或多个字符串。它接受两个或多个参数,返回它们连接后的字符串。

SELECT CONCAT('Hello',' ','World') AS result;
-- Output: Hello World

2. SUBSTRING()

SUBSTRING()函数可以从一个字符串中截取一段子字符串。

它可以接受三个参数,第一个参数为原始字符串,

第二个参数为要截取的子字符串的起始位置,

第三个参数为要截取的子字符串的长度。

SELECT SUBSTRING('Hello World', 7, 5) AS result;
-- Output: World

3. LENGTH()

LENGTH()函数返回一个字符串的长度。

SELECT LENGTH('Hello World') AS result;
-- Output: 11

4. REPLACE()

REPLACE()函数用于将一个字符串中的部分子字符串替换成另一个字符串。

它可以接受三个参数,第一个参数为原始字符串,第二个参数为要替换的子字符串,第三个参数为替换成的字符串。

SELECT REPLACE('Hello World','World','MySQL') AS result;
-- Output: Hello MySQL

5. TRIM()

TRIM()函数用于从字符串的两端去除空格。它可以接受一个参数,表示要处理的原始字符串。

SELECT TRIM('   Hello World   ') AS result;
-- Output: Hello World

6. UPPER()

UPPER()函数将一个字符串转换为大写字母。

SELECT UPPER('hello world') AS result;
-- Output: HELLO WORLD

7. LOWER()

LOWER()函数将一个字符串转换为小写字母。

SELECT LOWER('HELLO WORLD') AS result;
-- Output: hello world

8. LEFT()

LEFT()函数可以从一个字符串的左端截取一段子字符串。它可以接受两个参数,

第一个参数为原始字符串,

第二个参数为要截取的子字符串的长度。

SELECT LEFT('Hello World', 5) AS result;
-- Output: Hello

9. RIGHT()

RIGHT()函数可以从一个字符串的右端截取一段子字符串。它可以接受两个参数,

第一个参数为原始字符串,

第二个参数为要截取的子字符串的长度。

SELECT RIGHT('Hello World', 5) AS result;
-- Output: World

10. INSTR()

INSTR()函数可以用于查找一个字符串在另一个字符串中出现的位置。

它可以接受两个参数,第一个参数为要查找的字符串,第二个参数为要查找的原始字符串。

SELECT INSTR('Hello World', 'World') AS result;
-- Output: 7

11. LENTH(str)

返回字符串 str 的长度,以字节为单位。一个多字节 字符计数为多个字节。

这意味着对于 包含五个 2 字节字符的字符串,LENGTH() 返回 ,而 CHAR_LENGTH() 返回 。

mysql> SELECT LENGTH('text');
        -> 4

讲点二:正则表达式

一、简介

MYSQL中的正则表达式,主要用于对文本串进行条件筛选的操作,

比如筛选出串中某些带指定数字、符号、子串的部分。

二、语法

1. 字符类

用方括号表示一组字符,例如[A-Z]表示所有大写字母,[a-z]表示所有小写字母,[0-9]表示所有数字,

[^a-z]表示除小写字母之外的所有字符。

2. 重复次数

用花括号表示重复次数,例如a{3}表示a重复3次,a{2,}表示a至少重复2次,a{2,5}表示a重复2到5次。

3. 通配符

用句点表示任意字符,例如a.b表示以a开头,以b结尾,中间任意一个字符的字符串。

4. 选择符

用竖线表示或,例如a|b表示a或b。

5. 分组

用括号表示一组,例如(a|b)c表示ac或bc。

6. 特殊字符

正则表达式中还有一些特殊字符,例如转义字符\、行首符^、行尾符$等。

7. 任意数量

*是一个限定符,用来修饰前一个字符或分组,限定匹配重复的数量为任意数量。

例如:

正则表达式 a* 可以匹配 a aa aaa aaaa aaaaaaa等等

正则表达式 (ab)* 可以匹配 ab abababab ababababababab等等

需要注意个是,*与+不同,+要求重复数量至少为1,*则可以为0,所以字符串为空也是可以匹配的。

以下是常用的限定符代码:

  • * 重复零次或更多次
  • + 重复一次或更多次
  • ? 重复零次或一次
  • {n} 重复n次
  • {n,} 重复n次或更多次
  • {n,m} 重复n到m次

8. 图解

三、示例

1. 匹配单个字符

使用点号 . 可以匹配任意一个字符:

SELECT * FROM users WHERE name REGEXP 'm.n';

2. 匹配多个字符

使用方括号 [] 可以匹配一组字符:

SELECT * FROM users WHERE name REGEXP '[aeiou]';

3. 匹配重复次数

使用花括号 {} 可以匹配一定数量的字符:

SELECT * FROM users WHERE name REGEXP 'm{2,3}';

4. 匹配位置

使用脱字符 ^ 和美元符号 $ 可以匹配字符串的开头和结尾:

SELECT * FROM users WHERE name REGEXP '^m';

5. 匹配特定字符串

使用竖线 | 可以匹配多个字符串中的一个:

SELECT * FROM users WHERE name REGEXP 'john|mary|bob';

6. 匹配位数限制

使用星号 *,加号 + 和问号 ? 可以匹配一定位数的字符:

SELECT * FROM users WHERE name REGEXP '.{4,6}';

7. 匹配单词

使用圆括号 () 可以匹配整个单词:

SELECT * FROM users WHERE name REGEXP '(john|mary) smith';
相关推荐
数据猎手小k2 小时前
AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
android·人工智能·机器学习·语言模型
Ai 编码助手2 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
白云如幻2 小时前
MySQL排序查询
数据库·mysql
你的小102 小时前
JavaWeb项目-----博客系统
android
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
风和先行3 小时前
adb 命令查看设备存储占用情况
android·adb
stars_User3 小时前
MySQL数据库面试题(下)
数据库·mysql
AaVictory.4 小时前
Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
android·java·list
Yaml44 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
yanwushu4 小时前
Xserver v1.4.2发布,支持自动重载 nginx 配置
mysql·nginx·php·个人开发·composer