`
llyer110
  • 浏览: 20348 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

SQL Server基于正则表达式的替换函数

 
阅读更多

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

 

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


例子:
update BOM_048 set REMARK=dbo.regexReplace(REMARK,'-[a-zA-Z]*','-',1,0) where PROPERTYFIELD='ALLINONEVER'

分享到:
评论

相关推荐

    用正则表达式提取SQL

    这类工具通常可以更准确地解析SQL语句,包括复杂的子查询、联接和窗口函数等,而不仅仅是基于正则表达式的简单匹配。它们通常提供API,允许开发者将SQL语句转换成易于处理的数据结构,以便进一步分析或执行。 总结...

    SqlServer类似正则表达式的字符处理问题

    SQL Serve提供了简单的字符模糊匹配功能,比如:like, patindex,不过对于某些字符处理场景还显得并不足够,日常碰到的几个问题有: 1. 同一个字符/字符串,出现了多少次 2. 同一个字符,第N次出现的位置 3. 多个...

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

    上述内容中介绍了在不支持正则表达式的SQL Server版本中,如何建立一个自定义的正则替换函数dbo.RegexReplace。此函数通过调用OLE对象的sp_OACreate存储过程创建VBScript的RegExp对象,设置RegExp对象的属性,然后...

    SQL 语法分析,正则表达式解析C#文件;正则表达式实现的语法分析引擎

    在SQL Server中,可以使用`LIKE`或`PATINDEX`函数进行简单的模式匹配,但正则表达式提供了更复杂的匹配规则,如贪婪与非贪婪匹配、分组、反向引用等。这使得在SQL查询中处理复杂的数据过滤和转换变得更加灵活。 接...

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

    –SQL正则替换函数 代码如下: CREATE function dbo.regexReplace ( @source ntext, –原字符串 @regexp varchar(1000), –正则表达式 @replace varchar(1000), –替换值 @globalReplace bit = 1, –是否是全局替换 @...

    正则表达式在SQL Server 2000中的实现与应用.pdf

    由于SQL Server 2000缺乏内置的正则表达式支持,开发者通常会创建自定义函数来实现更复杂的正则表达式功能。这可能涉及使用其他编程语言(如VBScript或Java)编写存储过程,然后在SQL中调用这些存储过程。 4. **...

    SQL中使用正则替换的自定义函数

    在SQL Server中,我们通常需要借助外部库,如`fn_regexp_replace`这个自定义函数,它模拟了其他数据库系统(如PostgreSQL)中的正则表达式替换功能。在提供的压缩包中,"ReplaceHtml_RegExp.sql"可能就是这样一个...

    正则表达式从入门到精通

    虽然标准SQL不直接支持正则表达式,但许多数据库系统如MySQL、PostgreSQL、Oracle和SQL Server提供了扩展函数来实现正则表达式的功能,如MySQL的`REGEXP`或SQL Server的`PATINDEX`。 在毕业设计中,正则表达式是一...

    在sqlserver2008r2版本中实现正则表达式

    在SQL Server 2008 R2版本中,尽管它本身并不直接支持正则表达式(regex)功能,但可以通过一些扩展方法或者第三方工具来实现正则表达式的使用。正则表达式是一种强大的文本处理工具,能进行复杂的模式匹配和搜索...

    sql server 提取汉字/数字/字母的方法 demo

    本文将介绍如何使用SQL Server编写函数来实现这些功能,并提供示例代码帮助理解。 #### 一、提取数字的方法 在SQL Server中提取字符串中的数字可以通过创建自定义函数实现。这里我们将通过一个具体的例子来展示这...

    ASP_NET正则表达式

    - SQL Server 2008及以上版本引入了`LIKE`和`PATINDEX`函数的增强版——`SYSTEM_VERSIONING`,支持简单的正则表达式匹配。 - PostgreSQL、MySQL等数据库系统支持更强大的正则表达式操作。 - 在数据库设计和管理中...

    jsp+正则表达式实用总结

    4. **URL路由**:在自定义URL路由策略时,可以利用正则表达式匹配不同的URL模式,映射到相应的处理函数。 5. **安全防护**:防止SQL注入和跨站脚本攻击(XSS),通过正则表达式过滤掉潜在的恶意输入。 6. **日志...

    c#通讯录 主要用到了数据库和c#中的正则表达式

    2. **数据清理**:正则表达式还可以用于去除或替换字符串中的无效字符,确保数据的整洁性。 综上所述,"c#通讯录"项目结合了C#编程语言的特性,利用数据库技术存储联系人信息,同时采用正则表达式进行数据验证,...

    帮助文档集合(SQL.chm,XML 指南.chm,正则表达式系统教程.CHM)

    这是一个包含三个重要IT主题的压缩包文件集合:SQL.chm,XML指南.chm以及正则表达式系统教程.CHM。这些.chm文件是Windows的帮助文件格式,通常包含了丰富的技术信息和教程。 首先,我们来详细了解一下SQL...

    jstl文档和正则表达式文档

    正则表达式是一种强大的文本处理工具,常用于字符串匹配、查找、替换和分割等操作。在Java中,正则表达式主要通过`java.util.regex`包来实现。 1. **基础符号**:`.`表示任意字符,`^`表示行首,`$`表示行尾,`*`...

    精通Delphi文本处理:正则表达式的全面应用

    - `Create`:构造函数,用于创建正则表达式实例。 - `Match`:尝试匹配整个输入字符串。 - `Matches`:返回输入字符串中所有匹配的集合。 - `Replace`:替换输入字符串中所有匹配的部分。 - `Split`:根据正则表达式...

    xp_pcre-T-SQL中的正则表达式

    在SQL Server数据库管理系统中,标准的T-SQL语法并不直接支持正则表达式操作,这在处理复杂的数据匹配和检索时可能会造成不便。然而,通过使用扩展存储过程(Extended Stored Procedures),我们可以引入对正则...

Global site tag (gtag.js) - Google Analytics