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

作者:cyclamenkde  发布日期:2013-08-16 09:21:22
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进行了正则表达式支持实现。

功能说明:
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不支持重载,所以另外命名) www.it165.net
  source:源字符串
  pattern:正则表达式  
4.Regexp_SubStr(soure,pattern)
  匹配源字符串与正则表达式,返回匹配的子字符串。
  source:源字符串
  pattern:正则表达式  
5.Regexp_Replace(soure,pattern,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

结果一致。
 

Tag标签: 正则表达式   MS   SQL   Server  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规