zoukankan      html  css  js  c++  java
  • 在Sql Server 中使用正则表达式

    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
  • 相关阅读:
    phrase(短语)
    AS3版MP3播放器核心
    内存回收机制
    检测FPS和内存占用
    NetConnection读取asp.net
    基于flash AS3.0 的BASE64编码与解码类
    as3访问WebService,SOAP协议
    六种角度看OCA与OCP、OCM区别
    ORACLE报表触发器
    ORACLE EBS常用表
  • 原文地址:https://www.cnblogs.com/tohen/p/4265274.html
Copyright © 2011-2022 走看看