sql server使用正则表达式

article/2025/3/20 7:47:30

目标

为数据库创建一个正则表达式函数,供查询使用
不建议使用函数,能查询到内存里面用代码解决的就用代码解决!!!
这里的方法仅供参考

操作

1.新建sql server项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmEHyF1U-1607503197771)(https://user-images.githubusercontent.com/19277908/44075424-55e5e8be-9fcf-11e8-8f77-f48b7686499e.png)]
2.定义正则表达式的方法

public class SqlFunction
{/// 是否匹配正则表达式/// </summary>/// <param name="input">输入的字符串</param>/// <param name="pattern">正则表达式</param>/// <param name="ignoreCase">是否忽略大小写</param>/// <returns></returns>[Microsoft.SqlServer.Server.SqlFunction]public static bool RegexMatch(string input, string pattern, bool ignoreCase){bool isMatch = false;if (!string.IsNullOrEmpty(input) && !string.IsNullOrEmpty(pattern)){try{Match match = null;if (ignoreCase)match = Regex.Match(input, pattern, RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled);elsematch = Regex.Match(input, pattern, RegexOptions.Multiline | RegexOptions.Compiled);if (match.Success)isMatch = true;}catch { }}return isMatch;}/// 获取正则表达式分组中的字符/// </summary>/// <param name="input">输入的字符串</param>/// <param name="pattern">正则表达式</param>/// <param name="groupId">分组的位置</param>/// <param name="maxReturnLength">返回字符的最大长度</param>/// <returns></returns>[Microsoft.SqlServer.Server.SqlFunction]public static string GetRegexMatchGroups(string input, string pattern, int groupId, int maxReturnLength){string strReturn = string.Empty;if (!string.IsNullOrEmpty(input) && !string.IsNullOrEmpty(pattern)){try{Match match = Regex.Match(input, pattern, RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled);if (match.Success && (groupId < match.Groups.Count)){strReturn = match.Groups[groupId].Value;strReturn = (strReturn.Length <= maxReturnLength) ? strReturn : strReturn.Substring(0, maxReturnLength);}}catch{return string.Empty;}}return strReturn;}
}

3.配置数据库相关信息
右键-属性,设置连接字符串,可以设置多个连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ZHMkdw1-1607503197773)(https://user-images.githubusercontent.com/19277908/44075426-56212e92-9fcf-11e8-979a-169c06f0fac5.png)]
设置数据库版本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LdJQHpzN-1607503197774)(https://user-images.githubusercontent.com/19277908/44075427-5657fdf0-9fcf-11e8-806c-9117937178dc.png)]
4.右键,发布
选择目标数据库即可
4

使用
--注意N不能遗漏  
--注意sql里面的"true","false"对应1,0
where dbo.RegexMatch(table.property,N'"title":"[^"]*搜索内容[^"]*"',1)=1    

注意事项

1.发布报错:执行 CREATE ASSEMBLY 时失败,因为该程序集是为公共语言用户时的不受支持的版本生成的
SQL SERVER 2008R2 不支持.net4.0, 需要把项目改成.net3.5 部署成功了

2.执行sql报错:禁止在 .NET Framework 中执行用户代码。启用 “clr enabled” 配置选项
执行:

exec sp_configure 'show advanced options', '1';
go
reconfigure;
go
exec sp_configure 'clr enabled', '1'
go
reconfigure;
exec sp_configure 'show advanced options', '1';
go

参考资料:禁止在 .NET Framework 中执行用户代码。启用 “clr enabled” 配置选项

参考资料

SQL Server 阻止了对组件 ‘Ole Automation Procedures’ 的 过程’sys.sp_OACreate’ 的访问的解决方法
SQL Server中使用正则表达式
在VS2013中新建SQL Server项目,如何使用?

其他——PATINDEX

where PATINDEX(N'%搜索内容%', table.property)>=1

这里是使用通配符匹配
PATINDEX (Transact-SQL)
返回的是匹配的位置序号,不匹配返回0,判断序号>=1,即匹配


http://chatgpt.dhexx.cn/article/orM87dKT.shtml

相关文章

hive sql正则表达式总结

正则通配符的介绍 ^ 表示开头 $ 表示结尾 . 表示任意字符 * 表示任意多个 1、元字符匹配 (.) 表示匹配除换行符以外的任意字符。 (\w) 表示匹配字母、下划线、数字 &#xff08;\W匹配汉字&#xff09; (\d) 表示匹配数字 (\s) 表示匹配任意的空白符&#xff08;tab 换行…

SQL语法——使用正则查询

MySQL REGEXP运算符 MySQL适应Henry Spencer实现的正则表达式。MySQL允许您使用REGEXP运算符在SQL语句中匹配模式。 以下说明REGEXP了WHERE 子句中运算符 的语法&#xff1a; SELECT column_list FROMtable_name WHEREstring_column REGEXP pattern; 此语句执行 string_colu…

SQL正则表达式进行搜索

基本字符匹配 select prod_name from products where prod_name regexp .000 order by prod_name;分析 这里使用了正则表达式 .000&#xff0c;是正则表达式语言中一个特殊的字符。它表示匹配任意一个字符&#xff0c;因此&#xff0c;1000和2000都匹配且返回。 注意&#xf…

sql利用正则表达式提取数字及固定字符串

需求&#xff1a;最近boss要求做一个专项数据&#xff0c;提取所有数据中涉及酒驾/醉驾但没有正常处理的数据&#xff0c;实现的原理是在描述中查找是否有酒精含量&#xff0c;有就提取出来判断是否酒驾/醉驾&#xff0c;这就涉及到需要用到正则表达式提取数字和字符串。特此做…

在 sql 中使用正则表达式

新建测试表&#xff1a; -- 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 KE…

关于sql的正则表达式

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

SQL 正则表达式

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

初识Nginx (一)

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

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

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

达梦数据库的使用与维护

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

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

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

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

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

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

Oracle DB 数据库维护

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

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

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

sqlserver数据库得管理及维护

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