T SQL + 正则表达式

由于要验证某栏位的内容是否符合一定要求,最好的办法是用正则表达式,因为SQL Server 2000里面还没找到可以try catch的好办法,所以就找看能否加正则表达式,结果还真被我都搜索到了

验证的代码就不贴了,懒惰,呵呵


 1 SET  ANSI_NULLS  ON
 2 GO
 3 SET  QUOTED_IDENTIFIER  ON
 4 GO
 5 CREATE   FUNCTION   [ dbo ] . [ find_regular_expression ]
 6  (
 7    @source   varchar ( 5000 ),    -- 需要匹配的源字符串
 8    @regexp   varchar ( 1000 ),   -- 正则表达式
 9    @ignorecase   bit   =   0    -- 是否区分大小写,默认为false
10  )
11 RETURNS   bit    -- 返回结果0-false,1-true
12 AS
13   BEGIN
14
15   -- 0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
16    DECLARE   @hr   integer  
17
18 -- 用于保存返回的对象令牌,以便之后对该对象进行操作
19    DECLARE   @objRegExp   integer     DECLARE   @objMatches   integer
20
21 -- 保存结果
22    DECLARE   @results   bit
23   
24 /**/ /*
25创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,并确定机器中有VBScript.RegExp类库
26*/

27    EXEC   @hr   =  sp_OACreate  ' VBScript.RegExp ' @objRegExp  OUTPUT
28    IF   @hr   <>   0   BEGIN
29     SET   @results   =   0
30     RETURN   @results
31    END
32 /**/ /*
33以下三个分别是设置新建对象的三个属性。下面是'VBScript.RegExp'中常用的属性举例:
34    Dim regEx,Match,Matches         '建立变量。
35    Set regEx = New RegExp         '建立一般表达式。
36    regEx.Pattern= patrn         '设置模式。
37    regEx.IgnoreCase = True         '设置是否区分大小写。
38    regEx.Global=True                             '设置全局可用性。
39    set Matches=regEx.Execute(string)             '重复匹配集合
40    RegExpTest = regEx.Execute(strng)      '执行搜索。
41   for each match in matches                    '重复匹配集合
42   RetStr=RetStr &"Match found at position "
43   RetStr=RetStr&Match.FirstIndex&".Match Value is '"
44   RetStr=RetStr&Match.Value&"'."&vbCRLF Next
45   RegExpTest=RetStr
46
47*/

48    EXEC   @hr   =  sp_OASetProperty  @objRegExp ' Pattern ' @regexp
49    IF   @hr   <>   0   BEGIN
50     SET   @results   =   0
51     RETURN   @results
52    END
53    EXEC   @hr   =  sp_OASetProperty  @objRegExp ' Global ' , false
54    IF   @hr   <>   0   BEGIN
55     SET   @results   =   0
56     RETURN   @results
57    END
58    EXEC   @hr   =  sp_OASetProperty  @objRegExp ' IgnoreCase ' @ignorecase
59    IF   @hr   <>   0   BEGIN
60     SET   @results   =   0
61     RETURN   @results
62    END  
63 -- 调用对象方法
64    EXEC   @hr   =  sp_OAMethod  @objRegExp ' Test ' @results  OUTPUT,  @source
65    IF   @hr   <>   0   BEGIN
66     SET   @results   =   0
67     RETURN   @results
68    END
69 -- 释放已创建的 OLE 对象
70    EXEC   @hr   =  sp_OADestroy  @objRegExp
71    IF   @hr   <>   0   BEGIN
72     SET   @results   =   0
73     RETURN   @results
74    END
75   RETURN   @results
76   END
77


转载于:https://www.cnblogs.com/forward/archive/2008/01/23/1050061.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值