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
  • 相关阅读:
    "less is more",用"less”命令查看linux文本文件
    Linux命令"ls"进阶说明
    Linux文件权限说明
    Ubuntu14.04安装Ruby2.2方法
    Ubuntu查找软件命令
    Using If/Truth Statements with pandas
    Categorical Data
    DataFrame.loc的区间
    pandas学习(一)
    JDBC编程之事务处理
  • 原文地址:https://www.cnblogs.com/tohen/p/4265274.html
Copyright © 2011-2022 走看看