LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL中使用正则表达式【转】

admin
2010年12月15日 0:7 本文热度 2997

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

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

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

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

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

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

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

CREATE FUNCTION dbo.find_regular_expression_r
(
@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


EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END

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

该文章在 2010/12/15 0:07:19 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved