SQL Server正则表达式 替换函数应用详解_MsSql

--SQL正则替换函数

复制代码 代码如下:

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 @objRegExp integer
declare @result varchar(5000)
exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OADestroy @objRegExp
IF @hr <> 0 begin
return null
end
return @result
end

/*
配置对扩展存储过程的支持
Microsoft SQL Server 2005 -> 配置工具 -> 外围应用配置器 -> 功能的外围应用配置 -> Ole自动化:支持Ole自动化
使用举例1:

复制代码 代码如下:

declare @source nvarchar(4000)
set @source = 'dsafsdf'
select dbo.regexReplace(@source, '\<[^\>]+\>', '', 1, 1)

使用举例2: (将数据库字段中含有<font color='#ff0000'>aaa</font>替换为<font>aaa</font>)
Select id,dbo.regexReplace(字段,'<font([^>])*>','<font>',1,0) AS 别名 From 表
*/

时间: 2024-10-23 18:49:00

SQL Server正则表达式 替换函数应用详解_MsSql的相关文章

SQL Server时间戳功能与用法详解_MsSql

本文实例讲述了SQL Server时间戳功能与用法.分享给大家供大家参考,具体如下: 一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值.其实这误导了很多朋友. 1.基本概念 时间戳:数据库中自动生成的唯一二进制数字,与时间和日期无关的, 通常用作给表行加版本戳的机制.存储大小为 8个字节. 每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新操作时,该计数器值就会增加.该计数器是数据库时间戳.这 可以

基于SQL Server OS的任务调度机制详解_MsSql

简介      SQL Server OS是在Windows之上,用于服务SQL Server的一个用户级别的操作系统层次.它将操作系统部分的功能从整个SQL Server引擎中抽象出来,单独形成一层,以便为存储引擎提供服务.SQL Server OS主要提供了任务调度.内存分配.死锁检测.资源检测.锁管理.Buffer Pool管理等多种功能.本篇文章主要是谈一谈SQL OS中所提供的任务调度机制. 抢占式(Preemptive)调度与非抢占式(non-Preemptive)调度     数据

SQL SERVER 2000安装教程图文详解_MsSql

注意:Windows XP不能装企业版.win2000\win2003服务器安装企业版一.硬件和操作系统要求 下表说明安装 Microsoft SQL Server 2000 或 SQL Server 客户端管理工具和库的硬件要求. 硬件 最低要求计算机 Pentium 166 MHz 或更高. 内存 (RAM)至少 64 MB,建议 128 MB 或更多.根据笔者的经验,内存容量可以和数据容量保持1:1的比例,这样可以更好的发挥其效能.硬盘空间需要约500MB的程序空间,以及预留500M的数据

深入SQL Server 跨数据库查询的详解_MsSql

语句SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field"DBO"可以省略 如SELECT * FROM 数据库A..表A a, 数据库B..表B b WHERE a.field=b.field SqlServer数据库:--这句是映射一个远程数据库EXEC sp_addlinkedserver '远程数据库的IP或主机名',N'SQL Server'--这句是登录远程数据库EXEC sp_addlinkeds

SQL Server UPDATE语句的用法详解_MsSql

SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用中数据库中的数据改动是免不了的.通常,几乎所有的用户数据库中的大部分数据都要进行某种程度的修改.在SQL Server数据库中要想修改数据库记录,就需要用UPDATE语句,UPDATE语句就是为了改变数据库中的现存数据而存在的.这条语句虽然有一些复杂的选项,但确实是最容易学习的语句之一.这是因为在大

SQL Server中的连接查询详解_MsSql

在查询多个表时,我们经常会用"连接查询".连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 知道了连接查询的概念之后,什么时候用连接查询呢? 一般是用作关联两张或两张以上的数据表时用的.看起来有点抽象,我们举个例子,做两张表:学生表(T_student)和班级表(T_class).  T_student                       

SQL Server 2012 FileTable 新特性详解

FileTable是基于FILESTREAM的一个特性.有以下一些功能: •一行表示一个文件或者目录. •每行包含以下信息: • •file_Stream流数据,stream_id标示符(GUID). •用户表示和维护文件及目录层次关系的path_locator和parent_path_locator •有10个文件属性 •支持对文件和文档的全文搜索和语义搜索的类型列. •filetable强制执行某些系统定义的约束和触发器来维护命名空间的语义 •针对非事务访问时,SQL Server配置FIL

SQLServer中Partition By及row_number 函数使用详解_MsSql

partition  by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组. 今天群里看到一个问题,在这里概述下:查询出不同分类下的最新记录.一看这不是很简单的么,要分类那就用Group By;要最新记录就用Order By呗.然后在自己的表中试着做出来: 首先呢我把表中的数据按照提交时间倒序出来: "corp_name"就是

SQL Server替换函数应用详解

--SQL正则替换函数 代码如下: 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 integ