mysql8.0 正值表达式Regular expressions
准备工作,可以去下载 classicmodels 数据库资源如下
[ 点击:classicmodels]
(https://download.csdn.net/download/tomxjc/88685970)
前言
今天看到一个网站 在正值表达式 我今天分享给大写 ,都是 和 正值表达式有关
以下是一些介绍正值表达式,
NOT REGEXP-------- REGEXP 的否定
REGEXP --------字符串是否匹配正则表达式
REGEXP_INSTR()-------- 匹配正则表达式的子串的起始索引
REGEXP_LIKE() --------字符串是否匹配正则表达式
REGEXP_REPLACE()-------- 替换匹配正则表达式的子字符串
REGEXP_SUBSTR() --------返回匹配正则表达式的子串
RLIKE --------字符串是否匹配正则表达式
正则表达式是指定复杂搜索模式的有效方法。可用于正则表达式匹配的函数和运算符,并通过示例说明可用于正则表达式操作的一些特殊字符和结构。
MySQL 使用 International Components for Unicode (ICU) 实现正则表达式支持,它提供完整的 Unicode 支持并且是多字节安全的。 (在 MySQL 8.0.4 之前,MySQL 使用 Henry Spencer 的正则表达式实现,该实现以字节方式操作,并且不是多字节安全的。有关使用正则表达式的应用程序可能受到实现更改影响的方式的信息,请参阅正则表达式兼容性注意事项。)
在 MySQL 8.0.22 之前,可以在这些函数中使用二进制字符串参数,但它们会产生不一致的结果。在 MySQL 8.0.22 及更高版本中,使用任何 MySQL 正则表达式函数都会拒绝使用二进制字符串 ER_CHARACTER_SET_MISMATCH。
一、查文档
还是可以去mysql 官网查文档的 正值表达式Regular expressions
二、一些示例参考
查找包含名称 ‘Ford’ 的产品。
SELECT * FROM Products WHERE LOWER(productName) REGEXP 'Ford';
列出以 ‘ship’ 结尾的产品。
SELECT * FROM Products WHERE LOWER(productName0 REGEXP 'ship$';
报告在丹麦、挪威和瑞典的客户数量。
SELECT country, COUNT(*) FROM Customers WHERE country REGEXP 'Denmark|Norway|Sweden' GROUP BY country;'
哪些产品的产品代码在 S700_1000 到 S700_1499 的范围内?
SELECT * FROM Products WHERE productCode REGEXP 'S700_1[0-4][0-9]{2}';
哪些客户的姓名中包含数字?
SELECT * FROM Customers WHERE customerName REGEXP '[0-9]';
列出名为 Dianne 或 Diane 的员工的姓名。
SELECT * FROM Employees WHERE firstName REGEXP 'Dian';
列出产品名称中包含 ‘ship’ 或 ‘boat’ 的产品。
SELECT * FROM Products WHERE LOWER(productName) REGEXP 'ship|boat';
列出产品代码以 S700 开头的产品。
SELECT * FROM Products WHERE productCode REGEXP '^S700' ;
列出名为 Larry 或 Barry 的员工的姓名。
SELECT * FROM Employees WHERE firstName REGEXP '[BL]array';
列出姓名中包含非字母字符的员工的姓名。
SELECT * FROM Employees WHERE LOWER(firstName ) REGEXP '[^a-z]';
列出名称以 ‘Diecast’ 结尾的供应商。
SELECT DISTINCT(productVendor) FROM Products WHERE LOWER(productVendor) REGEXP 'diecast
三、然后问题来了? 正值表达式 执行效率快吗?
这个是 chat GPT,答案共参考
总结
`好了,今天就说到这里,其实很多场景还是需要的正值表达式 的 如 email 验证,信用卡验证,身份证验证,
最后需要大家点赞收藏,一键3连