正则表达式在MS SQL Server中的应用
发布时间:2020-12-14 01:43:57 所属栏目:百科 来源:网络整理
导读:正则表达式在MS SQL Server中的应用 Oracle数据库默认就提供了正则表达式(详见 维基百科)支持,如:REGEXP_LIKE(),REGEXP_INSTR(),REGEXP_SUBSTR(),REGEXP_REPLACE()),而不思进的MS SQL Server却没有直接提供。不过MS留了一手,那就是CLR(是公共语言
正则表达式在MS SQL Server中的应用
Oracle数据库默认就提供了正则表达式(详见
维基百科)支持,如:REGEXP_LIKE(),REGEXP_INSTR(),REGEXP_SUBSTR(),REGEXP_REPLACE()),而不思进的MS SQL Server却没有直接提供。不过MS留了一手,那就是CLR(是公共语言运行时,Common Language Runtime)。SQL SERVER 2005及以上的版本都可以运用此方法。MS是为了推.NET而这样干的吗?
言归正传,我这里完全参照Oracle实现了MS SQL Server对正则表达式的支持。主要运用CLR自行编写了以下5个标量函数:REGEXP_LIKE(),REGEXP_INSTR(),REGEXP_INSTR2(),REGEXP_SUBSTR(),REGEXP_REPLACE()。 功能说明: 1. Regexp_Like(soure,pattern)检查源字符串中是否存在匹配正则表达式的字符串,存在返回1,不存在返回0 source:源字符串 pattern:正则表达式 2. Regexp_InStr(soure,pattern,position,num) 匹配源字符串与正则表达式,返回匹配的起始位置值。 source:源字符串 pattern:正则表达式 possition:字符串开始位置 num:返回第n个匹配 3. Regexp_InStr2(soure,pattern) 匹配源字符串与正则表达式,返回第1个匹配的起始位置值。 (实际上是 Regexp_InStr()的重载。因MS SQL不支持重载,所以另外命名) source:源字符串 pattern:正则表达式 4. Regexp_SubStr(soure,pattern) 匹配源字符串与正则表达式,返回匹配的子字符串。 source:源字符串 pattern:正则表达式 5. Regexp_Replace(soure,replace_string) 匹配源字符串与正则表达式,返回值等于将匹配部分替换为指定字符串的新字符串。 source:源字符串 pattern:正则表达式 replace_string:用于替换的字符串 部署: 1.需部署在数据库服务器上; 2.环境要求:.Net Framework 3.5 (操作系统只测试过64位,32位未测试过); 3.下载程序,放到C:WINDOWS目录(当然,也可以是其它目录,但需要自己改部署脚本);程序下载链接 4.下载部署脚本;部署脚本下载链接 5.运行SQL Server Management Studio,登录并指定要使用正则表达式的库,打开并执行部署脚本即可。 验证: 说明: 1. 此处使用Oracle原生函数执行结果和自行编写的CLR执行结果进行对比; 2. 正则表达式'(w)1'的作用:匹配字符串中重复出现的任何单词字符; (放在当前的语境中,就是找出用户表姓名字段中包含叠字的信息 ) Sql Server: 结果一致。本文出自 “凉风动水碧莲香” 博客,转载请与作者联系! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |