IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 数据库 > MSSQL > 在SQL中使用正则表达式来查找你所要的字符

在SQL中使用正则表达式来查找你所要的字符

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

从表的某个字段判断是否存在某些规则的字符串,大概如下:

有个表叫TaskDeploy(任务部署的),其中字段Participants以格式 用户名,用户名 具体如下:

admin,小明,samlin
小明,samlin,test
samlin,test,小明
samlin,admin
samlin,test
samlin,test

好了,现在我要查找有指派给 'samlin'用户的任务记录怎么办?

我首先想到的是正则表达式,但Sql提供的功能真是少啊就是一个 like 加几个通配符,显然是满足不了我的要求的。

于是从网上搜集了一些资料,整理了一下。

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

CREATE FUNCTION dbo.find_regular_expression
(
@source varchar(5000),   --需要匹配的源字符串
@regexp varchar(1000),  --正则表达式
@ignorecase bit = 0  --是否区分大小写,默认为false
)
RETURNS bit  --返回结果0-false,1-true
AS
BEGIN
--0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
DECLARE @hr integer
--用于保存返回的对象令牌,以便之后对该对象进行操作
DECLARE @objregExp integer   DECLARE @objMatches integer
--保存结果
DECLARE @results bit

/*
创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,
并确定机器中有vbScript.RegExp类库
*/
EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
/*
以下三个分别是设置新建对象的三个属性。下面是'VBScript.RegExp'中常用的属性举例:
Dim regEx,Match,Matches   '建立变量。
Set regEx = New RegExp   '建立一般表达式。
regEx.Pattern= patrn   '设置模式。
regEx.IgnoreCase = True   '设置是否区分大小写。
regEx.Global=True     '设置全局可用性。
set Matches=regEx.Execute(string) '重复匹配集合
RegExpTest = regEx.Execute(strng) '执行搜索。
for each match in matches   '重复匹配集合
RetStr=RetStr &&Match found at position &
RetStr=RetStr&Match.FirstIndex&&.Match Value is '&
RetStr=RetStr&Match.Value&&'.&&vbCRLF Next
RegExpTest=RetStr
*/
EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--调用对象方法
EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--释放已创建的 OLE 对象
EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
RETURN @results
END

关键词标签:SQL

相关阅读 sql server系统表损坏的解决方法 SQL Server asp.net 数据提供程序连接池 SqlServer2005对现有数据进行分区具体步骤 一个Access数据库数据传递的实例方法 为导入文件加上时间戳标记的两种方法 SQL Server 2005 在不允许远程连接的情况下的破解

文章评论
发表评论

热门文章 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 解决SQL Server中Group无法实现的问题 解决SQL Server中Group无法实现的问题 SQL Server 2005降级到2000的正确操作步骤 SQL Server 2005降级到2000的正确操作步骤 手把手教你学会SQL Server镜像操作 手把手教你学会SQL Server镜像操作 实战手记:让百万级数据瞬间导入SQL Server 实战手记:让百万级数据瞬间导入SQL Server

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SQL Server创建表语句介绍 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 如何使用SQL Server中的客户端配置工具 SQL Server 分布式查询:OLE DB连接(一)