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';
相关推荐
Python之栈15 分钟前
【无标题】
数据库·python·mysql
亦世凡华、43 分钟前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
拭心10 小时前
Google 提供的 Android 端上大模型组件:MediaPipe LLM 介绍
android
White_Mountain11 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
老王笔记11 小时前
GTID下复制问题和解决
mysql
带电的小王12 小时前
WhisperKit: Android 端测试 Whisper -- Android手机(Qualcomm GPU)部署音频大模型
android·智能手机·whisper·qualcomm
Lojarro12 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
梦想平凡13 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO13 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong13 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存