在 sql 中使用正则表达式

article/2025/3/20 13:37:32

新建测试表:

-- Table: public.table01-- DROP TABLE public.table01;CREATE TABLE IF NOT EXISTS public.table01
(id bigint NOT NULL,name character varying COLLATE pg_catalog."default" NOT NULL,age integer,CONSTRAINT table01_pkey PRIMARY KEY (id)
)
WITH (OIDS = FALSE
)
TABLESPACE pg_default;ALTER TABLE public.table01OWNER to postgres;

语法

  • ~ 匹配正则表达式(区分大小写)
  • ~* 匹配正则表达式(不区分大小写)
  • !~ 不匹配正则表达式(区分大小写)
  • !~* 不匹配正则表达式(不区分大小写)

查询特定字符或字符串开头的记录 ^

SELECT * FROM tableName WHERE fieldName~'^a';
  • 查询表 tableName 中 fieldName 中以 小写 'a' 开头的数据

测试 ^

SELECT * FROM public.table01 where name~'^张';

返回结果

查询特定字符或字符串结尾的记录

SELECT * FROM tableName WHERE fieldName ~ 'a';
  • 查询表 tableName 中 fieldName 中以 小写 'a' 结尾的数据

测试

SELECT * FROM public.table01 where name~'三';

返回结果

用符号 "." 来代替字符串中任意一个字符

测试 .

SELECT * FROM public.table01 where name~'张.三';

返回结果

使用 "*" 和 "+" 匹配多个字符

"*" 匹配前面的字符任意多次,包括0次

"+" 匹配前面的字符至少1次

测试 *

SELECT * FROM public.table01 where name ~ '肖七*';  --'七'可以一个都没有

返回结果

测试 +

SELECT * FROM public.table01 where name ~ '肖七+';   -- '七'至少一个

返回结果

匹配指定字符串(单个、多个(A|B))

测试

SELECT * FROM public.table01 where name ~ '肖|三';
  • 查询name中有 '肖' 或者 '三' 的数据

返回结果

匹配指定字符串中的任意一个([])

测试 [ ]

SELECT * FROM public.table01 where name ~ '[肖七]';
  • 查询字段 name中含有 '肖' 或者 '七' 或者 '肖七' 的数据

返回结果

和 '|' 比较下

SELECT * FROM public.table01 where name ~ '肖|肖七';

相当于 '肖|七|肖七'

匹配指定字符串以外的字符

测试

SELECT * FROM public.table01 where name !~ '肖|三';
  • 查询字段 name中不含 '肖' 或者 '三' 的数据

返回结果

和 "SELECT * FROM public.table01 where name ~ '肖|三'" 正好相反

使用 {M,} 或 {M,N} 指定字符串连续出现的次数

"{M,}" 匹配前面的字符至少M次

"{M,N}" 匹配前面的字符至少M次,至多N次

测试 {M,}

SELECT * FROM public.table01 where name ~ '八{2,}';
  • 查询字段 name中含有至少2个 '八' 的数据

返回结果

测试 {M,N}

SELECT * FROM public.table01 where name ~ '八{0,1}八';
  • 查询字段 name中含有 '八' 或者 '八八' 的数据

返回结果

和 "SELECT * FROM public.table01 where name ~ '八{1,2}八'" 比较下


http://chatgpt.dhexx.cn/article/8LueO8E1.shtml

相关文章

关于sql的正则表达式

1、关于正则表达式的四个函数,如下 REGEXP_LIKE (匹配) REGEXP_INSTR (包含) REGEXP_REPLACE (替换) REGEXP_SUBSTR (提取) 2、在做正则时,做匹配的可能比较多,因此需要了解匹配字符定位 1:定位元字符 元字符说明^使表达式定位…

SQL 正则表达式

一、正则表达式 like与regexp的区别[1]like匹配整个列[2]。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外);REGEXP在列值内进行匹配。如果被匹配的匹配的文本…

初识Nginx (一)

初识Nginx (一) Nginx适用于哪些场景 一个web请求从红色箭头进来后,会先经过Nginx,然后进入应用程序,然后再去访问数据库或缓存服务。 那么这里有一个问题,我们的应用服务要求的开发效率很高,所以运行效率是很低的&a…

SQL Server数据库维护计划的实施步骤(转帖)

我公司在组建局域网时,考虑到商业企业的特点,仔细考量了购、销、存三大环节中发生的各种数据及其存储问题后,选定了以Windows 2000 Server为操作系统,SQL Server 2000为数据库平台来搭建局域网的应用系统的软件平台,以…

达梦数据库的使用与维护

本文是从安装达梦库到使用维护的过程。 1.达梦库的安装 1.1收集软硬件信息 我是用的是本地虚拟机,操作系统是中标麒麟6.0,数据库版本为dm7_setup_rh6_64_ent_7.6.0.197_20190917。安装前需确认下机器的cpu,系统版本,空间存储等…

SQL Server 维护计划(数据库备份)

通过维护计划实现数据库完整备份 步骤一 打开数据库——》在资源管理器中找到管理——》找到维护计划——》鼠标右键新建维护计划 步骤二 在资源管器左边——》选择工具箱——》将"备份数据库"任务、"清除维护任务"、"收缩数据库"任务选项——…

【数据库管理】数据库自动维护任务介绍

概述自动维护任务的演变 10g 预定义的维护窗口Maintenance Windows预定义的自动系统任务Predefined Automatic System Tasks 11g 预定义的维护窗口Maintenance Windows预定义自动维护任务Automated Maintenance Tasks 12c 预定义的维护窗口Maintenance Windows预定义自动维护任…

服务器数据库维护需要做哪些,数据库运维究竟需要做什么?

数据库是存放数据、经常是那些高敏感度数据的宝库,因此它也毫无疑问的是合规检查程序的重点区域。几乎所有的企业合规都会对哪些人、能在什么时间、访问什么数据库作出规定,并且需要一个专职人员来管理这些权限。那么,作为管理数据库的专职人员,需要做些什么呢?下面来了解…

创建与维护MySQL数据库

目录 一、创建MySQL数据库 1.链接MySQL 2.查看当前的数据库 3.创建数据库 4.创建数据库时设置字符编码 5.查看和显示数据库的编码方式 6.使用alteer database 数据库名character set utf8; 修改数据库编码 7.进入或切换数据库 8.显示当前数据库 select database(); 二…

第10章 数据库运行维护与优化

10.1数据库运行维护基本工作 一般来说,维护工作主要包括:数据库的转储和恢复;数据库的安全性和完整性控制;数据库性能的监控分析和改进;数据库的重组和重构。 ①数据库的转储与恢复 作为数据库管理员,应该针对各种数…

SQL Server维护计划自动备份数据库

GPS平台、网站建设、软件开发、系统运维,找森大网络科技! https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p1841 使用SQL Server 2008的维护计划可以实现自动备份数据库,并自动删除过期备份的功…

mysql数据库维护(mysql学习笔记)

数据库备份: 2.数据库维护: analyze table用来检查表键是否正确,如下: check table 用来针对许多问题对表进行检查。在myisam表上海对索引进行检查。check table支持一系列的用于myisam表的方式,changed检查自最后一次…

Oracle DB 数据库维护

• 管理优化程序统计信息 • 管理自动工作量资料档案库(AWR) • 使用自动数据库诊断监视器(ADDM) • 说明和使用指导框架 • 设置预警阈值 • 使用服务器生成的预警 • 使用自动任务 数据库维护 通过复杂的Oracle DB 基础结构,可以方便地执行预先数据库维护&#xf…

使用SQL命令创建与维护数据库

创建数据库 create database DB_Book -- 数据库名,在现有连接中不可重复 on primary -- 主文件 (name DB_Book, -- 数据文件逻辑名filename D:\A_file\数据库\图书管理\DB_Book.mdf, -- 文件名及位置size 1mb, -- 初始大小maxSize 1…

sqlserver数据库得管理及维护

sqlserver数据库得管理及维护 sqlserver数据库得管理及维护 sqlserver数据库得管理及维护前言一、手动备份及恢复二、自动备份及定期清除备份集计划三、数据库日志收缩方法一:直接通过企业管理器收缩日志方法二:分离数据库及日志文件 四、数据库索引碎片…

《数据库系统实训》实验报告——数据库维护

数据库维护 第一部分:样例库的应用 1)备份数据库命令: mysqldump -u root -p --databases test1 > /usr/local/mysql/test1.bak.sqltest1是数据库的备份文件 2)恢复备份数据: 首先删除原有的数据库test1&#xf…

SQL Server 数据库维护计划

SQL Server 数据库维护计划 开始 SQL Server 维护计划向导选择计划属性新建作业计划选择维护任务选择维护任务顺序维护任务配置1. 数据库检查完整性2. 数据库完整性备份3. 数据库差异性备份4. 数据库事务日志备份5. 清除维护 选择报告选项启用邮件配置文件重启代理服务执行维护…

MySQL之数据库维护

文章目录 1 数据库维护1.1 数据库文件1.1.1 MySQL创建并管理的数据库文件1.1.2 MySQL数据库存放位置 1.2 性能状态关键指标QPS和TPS1.3 开启慢查询日志1.4 数据库备份1.4.1 myqldump示例 1.5 数据库修复1.5.1 myisamchk修复1.5.2 mysqlcheck修复1.5.3 .frm文件修复1.5.3.1 Inno…

数字电路实验怎么接线视频讲解_电工知识:三相电表怎么接线?2种接线方法一一讲解,实物对照...

之前我们介绍单项电表接线方法,本期我们介绍三相电表接线方法,主要说两种,一种是直接式一种是带电流互感器的。这2种接线从测量原理和构成角度来说,没什么差别。只不过直接式的三相电表额定电流是根据负载的电流来选的&#xff0c…

数电实验七:译码显示电路

转载自https://wu-kan.cn/_posts/2018-07-03-译码显示电路/ 数字电子技术实验报告 实验题目:译码显示电路 预习报告 内容一 74LS194芯片相关。 功能与真值表 CP时钟 C r ‾ \overline{Cr} Cr清零 S 1 {S_1} S1​ S 0 {S_0} S0​工作状态 Q A Q_A^ QA​ Q B …