微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式在MS SQL Server中的应用

正则表达式在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'的作用:匹配字符串中重复出现的任何单词字符;

(放在当前的语境中,就是找出用户表姓名字段中包含叠字的信息 )


Oracle


sql Server

结果一致。


本文出自 “凉风动水碧莲香博客,转载请与作者联系!

原文地址:https://www.jb51.cc/regex/361610.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐