当前位置: 首页 > news >正文

SQL REGEXP 正则表达式

SQL中的正则表达式(通常表示为REGEXP或RLIKE)是一种强大的模式匹配工具,允许你执行复杂的字符串搜索和匹配操作。

基本语法

大多数SQL实现支持以下基本语法

SELECT column_name 
FROM table_name 
WHERE column_name REGEXP 'pattern';

或者使用RLIKE

SELECT column_name 
FROM table_name 
WHERE column_name RLIKE 'pattern';

常用正则表达式元字符

元字符描述示例
.匹配任意单个字符'a.c' 匹配 "abc", "a c"
^匹配字符串开头'^a' 匹配以a开头的字符串
$匹配字符串结尾'a$' 匹配以a结尾的字符串
*匹配前一个字符0次或多次'a*b' 匹配 "b", "ab", "aab"
+匹配前一个字符1次或多次'a+b' 匹配 "ab", "aab"
?匹配前一个字符0次或1次'a?b' 匹配 "b", "ab"
[]匹配括号内的任意一个字符'[abc]' 匹配 "a", "b" 或 "c"
[^]不匹配括号内的任意字符'[^abc]' 匹配非a,b,c的字符
``或操作符`'ab'` 匹配 "a" 或 "b"
()分组'(ab)+' 匹配 "ab", "abab"
{n}匹配前一个字符恰好n次'a{2}' 匹配 "aa"
{n,}匹配前一个字符至少n次'a{2,}' 匹配 "aa", "aaa"
{n,m}匹配前一个字符n到m次'a{2,4}' 匹配 "aa", "aaa", "aaaa"

-- 基本用法
SELECT * FROM users WHERE name REGEXP '^J.*n$';

-- 不区分大小写匹配
SELECT * FROM users WHERE name REGEXP BINARY '^[A-Z]';

-- 替换
SELECT REGEXP_REPLACE(phone, '[^0-9]', '') AS clean_phone FROM customers;

实用示例

验证电子邮件格式

SELECT email FROM users WHERE email REGEXP '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}$';

提取字符串中的数字

-- MySQL
SELECT REGEXP_SUBSTR(description, '[0-9]+') AS numbers FROM products;

-- PostgreSQL
SELECT (regexp_matches(description, '[0-9]+'))[1] AS numbers FROM products;

查找包含特殊字符的记录

SELECT * FROM comments WHERE content REGEXP '[^a-zA-Z0-9 ]';

匹配特定格式的日期

SELECT * FROM logs WHERE entry_date REGEXP '^[0-9]{4}-[0-9]{2}-[0-9]{2}$';

性能考虑

  • 正则表达式通常比简单的LIKE操作更消耗资源

  • 在大型表上使用时应谨慎,考虑添加索引或使用其他过滤条件缩小结果集

  • 某些数据库允许创建基于函数的索引来加速正则表达式查询

正则表达式是SQL中强大的工具,但需要根据具体的数据库系统来调整语法和使用方法

http://www.dtcms.com/a/99238.html

相关文章:

  • 圆球法线图,图生法线图 图片生成法线图
  • Git Reset 命令详解与实用示例
  • LangChain 结构化输出:用 Pydantic + PydanticOutputParser 驯服 LLM 的“自由发挥”
  • 【VP开发如此简单】Vision pro 实现图片跟踪
  • 异步转同步,实现一个消息队列
  • leetcode刷题日记——H 指数
  • 【Qt】数据库管理
  • Unity编辑器功能及拓展(3) —[Attribute]特性
  • 导航到渲染:浏览器加载页面的关键路径分析
  • 链表的创建:头插法与尾插法详解(数据结构)
  • 指纹识别之whois的作用:WHOIS数据在渗透测试中深度利用
  • vmware 创建win10 系统,虚拟机NAT网络设置
  • OJ题:移动零
  • Day 5
  • FPGA实现4K MIPI视频解码转HDMI2.0输出,基于IMX317摄像头,支持4K@60Hz,提供2套工程源码和技术支持
  • Logback 全面指南:从基础配置到高级应用
  • 76个复古黑白科幻几何抽象灵感运动元素纹理DJ舞台背景MV视频/PSD/PNG/JPG素材 Pixflow - Tour Visual Elements
  • 深入实践:基于WebSocket的全球化金融数据实时对接方案。 马来西亚、印度、美国金融数据API
  • 【Python桌面应用】PySide6 界面开发完全指南
  • javascript实现一个函数,将字符串中的指定子串全部替换为另一个字符串的原理,以及多种方法实现。
  • 1014 Waiting in Line
  • C++中shared_ptr 是线程安全的吗?
  • 使用 Avada 主题实现高级表单功能的技术指南
  • Day2 蓝桥杯省赛冲刺精炼刷题 —— 递归与递推
  • 浙江大学公开课|第二季|从大模型、智能体到复杂AI应用系统的构建——以产业大脑为例
  • final+模版设计模式的理解
  • [操作系统,学习记录]3.进程(2)
  • -PHP 应用文件上传函数缺陷条件竞争二次渲染黑白名单JS 绕过
  • AI大模型从0到1记录学习 day09
  • 求解AX=XB 方法