SQL SERVER 正则替换

use pubdb
go

IF OBJECT_ID(N‘dbo.RegexReplace‘) IS NOT NULL
 DROP FUNCTION dbo.RegexReplace
GO
--开始创建正则替换函数
 CREATE FUNCTION DBO.RegexReplace
(
 @string VARCHAR(MAX), --被替换的字符串
 @pattern VARCHAR(255), --替换模板
 @replacestr VARCHAR(max), --替换后的字符串
 @IgnoreCase INT = 0 --0区分大小写 1不区分大小写
)
RETURNS VARCHAR(max)
AS
BEGIN
 DECLARE @objRegex INT, @retstr VARCHAR(8000)
 --创建对象
 EXEC sp_OACreate ‘VBScript.RegExp‘, @objRegex OUT
 --设置属性
 EXEC sp_OASetProperty @objRegex, ‘Pattern‘, @pattern
 EXEC sp_OASetProperty @objRegex, ‘IgnoreCase‘, @IgnoreCase
 EXEC sp_OASetProperty @objRegex, ‘Global‘, 1
 --执行
 EXEC sp_OAMethod @objRegex, ‘Replace‘, @retstr OUT, @string, @replacestr
 --释放
 EXECUTE sp_OADestroy @objRegex
 RETURN @retstr
END
GO

--保证正常运行的话,需要将Ole Automation Procedures选项置为1
EXEC sp_configure ‘show advanced options‘, 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure ‘Ole Automation Procedures‘, 1
RECONFIGURE WITH OVERRIDE

时间: 2024-10-21 16:08:35

SQL SERVER 正则替换的相关文章

sql server 字符串替换 1992-2008 '-'替换为@

if exists (select* from 某表名 where SUBSTRING(主题词, PATINDEX('%[0-9]%', 主题词) + 4, 1) = '-') UPDATE 某表名 SET 主题词 =STUFF (主题词,PATINDEX('%[0-9]%', 主题词) + 4 , 1 ,'@' ) where(主题词 like '%[0-9]%-%[0-9]%') 主题词1998-fmkgm先-天性-1992@2015-畸形:新-生-儿-疾病-预防(卫生) sql serve

SQL Server批量替换所有表中内容sql语句-清楚挂马

有朋友经常会发现自己的数据库所有的内容给插入了一些代码,如果要一个个表一个个记录去删除,太麻烦了,下面我在在网上找到一个可以批量删除的方法,实际上是批量把那段恶意代码替换,非常快速. declare @t varchar(255),@c varchar(255) declare table_cursor cursor for select a.name,b.name from sysobjects a,syscolumns b ,systypes c where a.id=b.id and a.

理解性能的奥秘——应用程序中慢,SSMS中快(6)——SQL Server如何编译动态SQL

本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(5)--案例:如何应对参数嗅探 我们抛开参数嗅探的话题,回到了本系列的最初关注点中:为什么语句在应用程序中慢,但是在SSMS中快?到目前为止,都是在说存储过程的情况.而存储过程的问题通常是因为SET ARITHABORT的不同设置项的原因.如果你的应用不使用存储过程,而是通过中间层提交客户端的查询,那么也有几个原因可能让你的查询因为不同的缓存条目从而使得在SSMS和应用程序中的运

SQL Server 2008 修改安装路径后安装出错的解决方法

1.安装时如果修改安装路径后报错 例如想把“C:\Program Files\Microsoft SQL Server” 修改为“D:\Program Files\Microsoft SQL Server” 错误的详细信息是:"The INSTANCESHAREDWOWDIR command line value was not specified. This value must be specified when the INSTANCESHAREDDIR value is specifie

SQL Server中利用正则表达式替换字符串

原文:SQL Server中利用正则表达式替换字符串 建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255),

13 三种方式替换SQL Server中的NULL值(Different ways to replace NULL in Sql Server)

在Sql Server中有三种方式对查询结果中的NULL值进行替换. 如有下面的一张表: 我们可以通过自连接(Self-Join)的方式一张员工名和其对应的经理名的表: SELECT E.[Name],M.[Name] FROM [tblEmployee] AS E LEFT JOIN [tblEmployee] AS M ON E.ManagerId = M.EmployeeId 我们可以看到,Todd对应的Manger为NULL,这说明Todd应该是公司的最高层,他没有经理.但是这样显示很不

SQL Server 2005,2008 正则表达式 替换函数应用详解

CREATE function dbo.regexReplace ( @source ntext, --原字符串 @regexp varchar(1000), --正则表达式 @replace varchar(1000), --替换值 @globalReplace bit = 1, --是否是全局替换 @ignoreCase bit = 0 --是否忽略大小写 ) returnS varchar(1000) AS begin declare @hr integer declare @objReg

SQL Server中的小技巧(重复、替换、截取、去空格、去小数点后的位数)

PS:随笔写的在SQL Server中要用到的 (重复.替换.截取.去空格.去小数点后的位数) /*---------------------------重复--------------------------------*/ --重复字符串 返回[abc#abc#abc#] select replicate('abc#', 3); /*---------------------------替换--------------------------------*/ --替换字符串 将e替换成E 返

oracle 与sql server 部分内置函数替换

1,trunc--convert oracle: select trunc(sysdate) from dual   输出:2016/5/24 sql server:select CONVERT(varchar(100), GETDATE(), 111) 输出:2016/05/24 2,to_char--datename oracle:select to_char(sysdate,'day')  from dual; 输出星期二 sql server:Select datename(weekda