`
arfayr
  • 浏览: 25565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL Server 2000 中使用正则表达式

 
阅读更多
这两天有个需求,需要在数据库中判断字符串的格式,于是从网上搜集了一些资料,整理了一下。

下面这个是一个自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.

  1. CREATEFUNCTIONdbo.find_regular_expression
  2. (
  3. @sourcevarchar(5000),--需要匹配的源字符串
  4. @regexpvarchar(1000),--正则表达式
  5. @ignorecasebit=0--是否区分大小写,默认为false
  6. )
  7. RETURNSbit--返回结果0-false,1-true
  8. AS
  9. BEGIN
  10. --0(成功)或非零数字(失败),是由OLE自动化对象返回的HRESULT的整数值。
  11. DECLARE@hrinteger
  12. --用于保存返回的对象令牌,以便之后对该对象进行操作
  13. DECLARE@objRegExpintegerDECLARE@objMatchesinteger
  14. --保存结果
  15. DECLARE@resultsbit
  16. /*
  17. 创建OLE对象实例,只有sysadmin固定服务器角色的成员才能执行sp_OACreate,并确定机器中有VBScript.RegExp类库
  18. */
  19. EXEC@hr=sp_OACreate'VBScript.RegExp',@objRegExpOUTPUT
  20. IF@hr<>0BEGIN
  21. SET@results=0
  22. RETURN@results
  23. END
  24. /*
  25. 以下三个分别是设置新建对象的三个属性。下面是'VBScript.RegExp'中常用的属性举例:
  26. DimregEx,Match,Matches'建立变量。
  27. SetregEx=NewRegExp'建立一般表达式。
  28. regEx.Pattern=patrn'设置模式。
  29. regEx.IgnoreCase=True'设置是否区分大小写。
  30. regEx.Global=True'设置全局可用性。
  31. setMatches=regEx.Execute(string)'重复匹配集合
  32. RegExpTest=regEx.Execute(strng)'执行搜索。
  33. foreachmatchinmatches'重复匹配集合
  34. RetStr=RetStr&"Matchfoundatposition"
  35. RetStr=RetStr&Match.FirstIndex&".MatchValueis'"
  36. RetStr=RetStr&Match.Value&"'."&vbCRLFNext
  37. RegExpTest=RetStr
  38. */
  39. EXEC@hr=sp_OASetProperty@objRegExp,'Pattern',@regexp
  40. IF@hr<>0BEGIN
  41. SET@results=0
  42. RETURN@results
  43. END
  44. EXEC@hr=sp_OASetProperty@objRegExp,'Global',false
  45. IF@hr<>0BEGIN
  46. SET@results=0
  47. RETURN@results
  48. END
  49. EXEC@hr=sp_OASetProperty@objRegExp,'IgnoreCase',@ignorecase
  50. IF@hr<>0BEGIN
  51. SET@results=0
  52. RETURN@results
  53. END
  54. --调用对象方法
  55. EXEC@hr=sp_OAMethod@objRegExp,'Test',@resultsOUTPUT,@source
  56. IF@hr<>0BEGIN
  57. SET@results=0
  58. RETURN@results
  59. END
  60. --释放已创建的OLE对象
  61. EXEC@hr=sp_OADestroy@objRegExp
  62. IF@hr<>0BEGIN
  63. SET@results=0
  64. RETURN@results
  65. END
  66. RETURN@results
  67. END
下面是一个简单的测试sql语句,可以直接在查询分析器中运行。
  1. DECLARE@intLengthASINTEGER
  2. DECLARE@vchRegularExpressionASVARCHAR(50)
  3. DECLARE@vchSourceStringasVARCHAR(50)
  4. DECLARE@vchSourceString2asVARCHAR(50)
  5. DECLARE@bitHasNoSpecialCharactersasBIT
  6. --初始化变量
  7. SET@vchSourceString='TestoneThisisatest!!'
  8. SET@vchSourceString2='TesttwoThisisatest'
  9. --我们的正则表达式应该类似于
  10. --[a-zA-Z]{}
  11. --如:[a-zA-Z]{10}...一个十字符的字符串
  12. --获得字符串长度
  13. SET@intLength=LEN(@vchSourceString)
  14. --设置完整的正则表达式
  15. SET@vchRegularExpression='[a-zA-Z]{'+CAST(@intLengthasvarchar)+'}'
  16. --是否有任何特殊字符
  17. SET@bitHasNoSpecialCharacters=dbo.find_regular_expression(@vchSourceString,@vchRegularExpression,0)
  18. PRINT@vchSourceString
  19. IF@bitHasNoSpecialCharacters=1BEGIN
  20. PRINT'Nospecialcharacters.'
  21. ENDELSEBEGIN
  22. PRINT'Specialcharactersfound.'
  23. END
  24. PRINT'**************'
  25. --获得字符串长度
  26. SET@intLength=LEN(@vchSourceString2)
  27. --设置完整的正则表达式
  28. SET@vchRegularExpression='[a-zA-Z]{'+CAST(@intLengthasvarchar)+'}'
  29. --是否有任何特殊字符
  30. SET@bitHasNoSpecialCharacters=dbo.find_regular_expression(@vchSourceString2,@vchRegularExpression,0)
  31. PRINT@vchSourceString2
  32. IF@bitHasNoSpecialCharacters=1BEGIN
  33. PRINT'Nospecialcharacters.'
  34. ENDELSEBEGIN
  35. PRINT'Specialcharactersfound.'
  36. END
  37. GO
分享到:
评论

相关推荐

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

    此外,还有SQL Server Management Studio (SSMS) 的插件,如RegEx Query Builder,可以帮助在查询中使用正则表达式。 4. **模拟正则表达式** 在没有内置支持的情况下,还可以使用T-SQL的一些内置函数和操作符来...

    SQLServer中使用正则表达式

    /*********使用方法**************/ --正则校验(符合为1,不符合为0) SELECT [dbo].[Regex.IsMatch]('^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$','dyuanrong2010@163.com') 符合验证, [dbo].[Regex...

    sql_server 正则表达式

    正则表达式的引入,提供了一种更高效、更优雅的解决方案,不仅在记录的识别和比较中表现出色,还能完成在SQL Server 2000中被视为不切实际甚至不可能的任务。 #### SQL Server 2005的正则表达式支持 在SQL Server ...

    用正则表达式提取SQL

    标题“用正则表达式提取SQL”涉及到的是在编程中如何使用正则表达式来从文本或代码中抓取SQL语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...

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

    在SQL Server 2000中,虽然标准的正则表达式支持并不内置,但开发者仍然可以通过一些方式来实现正则表达式的功能。这主要依赖于T-SQL的内置函数和一些用户定义的函数(UDF)来模拟正则表达式的行为。下面将详细介绍...

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

    在这个主题中,我们将深入探讨SQL语法分析、正则表达式的应用以及如何在C#中使用正则表达式来解析文件。 首先,SQL语法分析是理解和执行SQL查询的关键步骤。当一个SQL语句被提交到数据库管理系统时,系统会对其进行...

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

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

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

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

    正则表达式从入门到精通

    深入学习正则表达式,不仅需要理解这些基本概念,还需要掌握如何在不同上下文中应用它们,包括如何处理Unicode字符、优化正则表达式性能以及在不同编程语言中使用正则表达式的差异。此外,实战练习和解决实际问题是...

    C#正则表达式提取网页数据

    本主题聚焦于利用C#的正则表达式功能来从网页中提取数据,并将其存储到SQL Server 2005数据库。下面将详细阐述这一过程中的关键知识点。 一、正则表达式(Regular Expression) 正则表达式是一种强大的文本处理工具...

    jsp+正则表达式实用总结

    在IT行业中,JavaServer Pages(JSP)与正则表达式是两种非常重要的技术,它们在网页开发和数据处理中起着至关重要的作用。这篇内容将深入探讨JSP与正则表达式的结合使用,以及它们在实际项目中的应用。 首先,JSP...

    用C#正则表达式实现的百度体育新闻的抓取

    在本文中,我们将深入探讨如何使用C#编程语言和正则表达式来实现百度体育新闻的抓取。C#是一种广泛应用于Windows平台的面向对象的编程语言,它提供了丰富的类库支持网络通信和数据处理。正则表达式则是用于文本模式...

    利用正则表达式对SQL解释的方法

    本文将探讨如何使用正则表达式来解析SQL语句,并通过具体实例来展示这一过程。 #### 正则表达式基础 正则表达式是一种强大的文本匹配工具,可以用来查找、替换以及提取特定模式的字符串。在SQL解析场景中,通过...

    T-SQL中使用正则表达式函数

    这篇文章将探讨如何在T-SQL中使用正则表达式的函数。 首先,我们看到作者在Visual Studio Team Services(VSTS,现在称为Azure DevOps)中创建了一个Database Project,并添加了一个类,该类包含一个名为`RegEx...

    使用正则表达式匹配tsql注释语句

    在本文中,我们将探讨如何使用正则表达式有效地匹配T-SQL(Transact-SQL)中的注释。 首先,让我们回顾一下T-SQL单行注释的基本形式: ```sql -- 这是一条注释 ``` 正则表达式的目的是找到所有以`--`开头直到行尾的...

Global site tag (gtag.js) - Google Analytics