这两天有个需求,需要在数据库中判断字符串的格式,于是从网上搜集了一些资料,整理了一下。
下面这个是一个自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.
- CREATEFUNCTIONdbo.find_regular_expression
- (
- @sourcevarchar(5000),--需要匹配的源字符串
- @regexpvarchar(1000),--正则表达式
-
@ignorecasebit=0--是否区分大小写,默认为false
- )
-
RETURNSbit--返回结果0-false,1-true
- AS
- BEGIN
- --0(成功)或非零数字(失败),是由OLE自动化对象返回的HRESULT的整数值。
- DECLARE@hrinteger
- --用于保存返回的对象令牌,以便之后对该对象进行操作
- DECLARE@objRegExpintegerDECLARE@objMatchesinteger
- --保存结果
- DECLARE@resultsbit
-
-
-
EXEC@hr=sp_OACreate'VBScript.RegExp',@objRegExpOUTPUT
- IF@hr<>0BEGIN
- SET@results=0
- RETURN@results
- END
-
-
-
EXEC@hr=sp_OASetProperty@objRegExp,'Pattern',@regexp
- IF@hr<>0BEGIN
- SET@results=0
- RETURN@results
- END
-
EXEC@hr=sp_OASetProperty@objRegExp,'Global',false
- IF@hr<>0BEGIN
- SET@results=0
- RETURN@results
- END
-
EXEC@hr=sp_OASetProperty@objRegExp,'IgnoreCase',@ignorecase
- IF@hr<>0BEGIN
- SET@results=0
- RETURN@results
- END
- --调用对象方法
-
EXEC@hr=sp_OAMethod@objRegExp,'Test',@resultsOUTPUT,@source
- IF@hr<>0BEGIN
- SET@results=0
- RETURN@results
- END
- --释放已创建的OLE对象
- EXEC@hr=sp_OADestroy@objRegExp
- IF@hr<>0BEGIN
- SET@results=0
- RETURN@results
- END
- RETURN@results
- END
下面是一个简单的测试sql语句,可以直接在查询分析器中运行。
- DECLARE@intLengthASINTEGER
- DECLARE@vchRegularExpressionASVARCHAR(50)
- DECLARE@vchSourceStringasVARCHAR(50)
- DECLARE@vchSourceString2asVARCHAR(50)
- DECLARE@bitHasNoSpecialCharactersasBIT
- --初始化变量
-
SET@vchSourceString=
-
SET@vchSourceString2=
- --我们的正则表达式应该类似于
- --[a-zA-Z]{}
- --如:[a-zA-Z]{10}...一个十字符的字符串
- --获得字符串长度
- SET@intLength=LEN(@vchSourceString)
- --设置完整的正则表达式
-
SET@vchRegularExpression=
- --是否有任何特殊字符
- SET@bitHasNoSpecialCharacters=dbo.find_regular_expression(@vchSourceString,@vchRegularExpression,0)
- PRINT@vchSourceString
- IF@bitHasNoSpecialCharacters=1BEGIN
-
PRINT
- ENDELSEBEGIN
-
PRINT
- END
-
PRINT
- --获得字符串长度
- SET@intLength=LEN(@vchSourceString2)
- --设置完整的正则表达式
-
SET@vchRegularExpression=
- --是否有任何特殊字符
- SET@bitHasNoSpecialCharacters=dbo.find_regular_expression(@vchSourceString2,@vchRegularExpression,0)
- PRINT@vchSourceString2
- IF@bitHasNoSpecialCharacters=1BEGIN
-
PRINT
- ENDELSEBEGIN
-
PRINT
- END
- GO
分享到:
相关推荐
此外,还有SQL Server Management Studio (SSMS) 的插件,如RegEx Query Builder,可以帮助在查询中使用正则表达式。 4. **模拟正则表达式** 在没有内置支持的情况下,还可以使用T-SQL的一些内置函数和操作符来...
/*********使用方法**************/ --正则校验(符合为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 2000中被视为不切实际甚至不可能的任务。 #### SQL Server 2005的正则表达式支持 在SQL Server ...
标题“用正则表达式提取SQL”涉及到的是在编程中如何使用正则表达式来从文本或代码中抓取SQL语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...
在SQL Server 2000中,虽然标准的正则表达式支持并不内置,但开发者仍然可以通过一些方式来实现正则表达式的功能。这主要依赖于T-SQL的内置函数和一些用户定义的函数(UDF)来模拟正则表达式的行为。下面将详细介绍...
在这个主题中,我们将深入探讨SQL语法分析、正则表达式的应用以及如何在C#中使用正则表达式来解析文件。 首先,SQL语法分析是理解和执行SQL查询的关键步骤。当一个SQL语句被提交到数据库管理系统时,系统会对其进行...
SQL Serve提供了简单的字符模糊匹配功能,比如:like, patindex,不过对于某些字符处理场景还显得并不足够,日常碰到的几个问题有: 1. 同一个字符/字符串,出现了多少次 2. 同一个字符,第N次出现的位置 3. 多个...
上述内容中介绍了在不支持正则表达式的SQL Server版本中,如何建立一个自定义的正则替换函数dbo.RegexReplace。此函数通过调用OLE对象的sp_OACreate存储过程创建VBScript的RegExp对象,设置RegExp对象的属性,然后...
深入学习正则表达式,不仅需要理解这些基本概念,还需要掌握如何在不同上下文中应用它们,包括如何处理Unicode字符、优化正则表达式性能以及在不同编程语言中使用正则表达式的差异。此外,实战练习和解决实际问题是...
本主题聚焦于利用C#的正则表达式功能来从网页中提取数据,并将其存储到SQL Server 2005数据库。下面将详细阐述这一过程中的关键知识点。 一、正则表达式(Regular Expression) 正则表达式是一种强大的文本处理工具...
在IT行业中,JavaServer Pages(JSP)与正则表达式是两种非常重要的技术,它们在网页开发和数据处理中起着至关重要的作用。这篇内容将深入探讨JSP与正则表达式的结合使用,以及它们在实际项目中的应用。 首先,JSP...
在本文中,我们将深入探讨如何使用C#编程语言和正则表达式来实现百度体育新闻的抓取。C#是一种广泛应用于Windows平台的面向对象的编程语言,它提供了丰富的类库支持网络通信和数据处理。正则表达式则是用于文本模式...
本文将探讨如何使用正则表达式来解析SQL语句,并通过具体实例来展示这一过程。 #### 正则表达式基础 正则表达式是一种强大的文本匹配工具,可以用来查找、替换以及提取特定模式的字符串。在SQL解析场景中,通过...
这篇文章将探讨如何在T-SQL中使用正则表达式的函数。 首先,我们看到作者在Visual Studio Team Services(VSTS,现在称为Azure DevOps)中创建了一个Database Project,并添加了一个类,该类包含一个名为`RegEx...
在本文中,我们将探讨如何使用正则表达式有效地匹配T-SQL(Transact-SQL)中的注释。 首先,让我们回顾一下T-SQL单行注释的基本形式: ```sql -- 这是一条注释 ``` 正则表达式的目的是找到所有以`--`开头直到行尾的...
3. ASP.NET中使用正则表达式的实例 - 在ASP.NET表单验证中,`RegularExpressionValidator`控件可以配合`RegularExpression`属性,实现客户端和服务器端的数据验证。 - 示例:验证邮箱地址,`...