08_mysql正则表达式
正则表达式:被宽泛地定义为在输入文本中表示某种模式的字符序列。
一、REGEXP 与 模式 搭配使用
| 模式 | 模式是什么匹配 |
|---|---|
| ^ | 字符串开头 |
| $ | 字符串结尾 |
| . | 任意单个字符 |
| [...] | 方括号内列出的任意字符 |
| [^...] | 方括号内未列出的任意字符 |
| p1|p2|p3 | 交替;匹配 p1、p2 或 p3 中的任意一个模式 |
| * | 零个或多个前导元素实例 |
| + | 一个或多个前导元素实例 |
| {n | n 个前导元素实例 |
| {m,n | m 到 n 个前导元素实例 |
| [A-Z] | 任意大写字母 |
| [a-z] | 任意小写字母字母 |
| [0-9] | 任意数字(0 到 9) |
| [[:<:]] | 单词开头 |
| [[:>:]] | 单词结尾 |
| [:class:] | 字符类,例如,使用 [:alpha:] 匹配字母表中的字母 |
① 带模式的正则表达式
SELECT * FROM stu_tb WHERE name REGEXP '^z'; -- 查找表中以z开头名字的记录

SELECT * FROM stu_tb WHERE name REGEXP 'u$'; -- 查找表中以u结尾名字的记录

二、正在表达式函数和运算符
1、RLIKE 运算符 --用于使用模式(或正则表达式)在数据库中搜索数据。(RLIKE 运算符用于判断给定的正则表达式是否与表中的记录匹配。如果记录匹配,则返回 1,否则返回 0)
①RLIKE 与 模式
SELECT * FROM stu_tb WHERE name RLIKE '^z'; --查找 表中所有名称以 'z' 开头的记录

② RLIKE 字符串匹配
SELECT ‘where are you ok.’ RLIKE 'a'; --查询来检查某个模式是否存在于单个字符串中

2、REGEXP_INSTR () 函数用于将指定的模式与字符串或数据库表中的数据进行匹配。此函数返回与指定模式匹配的字符串子字符串的起始索引;如果没有匹配,则返回 0;如果字符串或模式为 NULL,则返回 NULL。此字符串的字符索引从 1 开始。
REGEXP_INSTR(expr, pattern[, pos[, occurrence[, return_option[, match_type]]]])
-
expr: 执行搜索的字符串
- pattern: 在字符串中搜索的模式
SELECT REGEXP_INSTR('welcome to beijing', 'to') AS rest;

3、REGEXP_LIKE()函数 --用于搜索与指定模式匹配的字符串。如果该字符串与指定模式匹配,则此函数返回 1;如果不匹配,则返回 0;如果字符串或模式为 NULL,则返回 NULL。
REGEXP_LIKE(expr, pattern[, match_type])
-
expr: 执行搜索的字符串
-
pattern: 在字符串中搜索的模式
-
match_type:(可选参数)指定如何执行匹配的字符串;包括区分大小写匹配 (c)、不区分大小写匹配 (i)、多行模式 (m)、匹配行终止符 (n) 和匹配仅限 Unix 的行尾 (u)。
SELECT REGEXP_LIKE('welcome to beijing.', 'to') AS res;

4、regexp_replace() 函数--用于查找并替换与特定模式匹配的字符串。如果匹配,则用另一个字符串替换该字符串。如果不匹配,则返回原始字符串。如果字符串或模式为 NULL,则返回 NULL。
REGEXP_REPLACE(expr, pattern, repl[, pos[, occurrence[, match_type]]])
-
expr: 执行搜索的字符串
-
pattern: 在字符串中搜索的模式
-
repl: 替换字符串
SELECT REGEXP_REPLACE('welcome to beijing', 'beijing', 'guangzhou') AS res;


浙公网安备 33010602011771号