• 在SQL使用正则表达式


    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetValuebyregep]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[GetValuebyregep]
    GO

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

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

    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

  • 相关阅读:
    IE无法打开internet网站已终止操作的解决的方法
    iOS IAP教程
    splice()函数的使用方法
    socket通信简单介绍
    puppet安装和使用
    解惑:NFC手机怎样轻松读取银行卡信息?
    深入浅出谈开窗函数(一)
    TCP/IP协议,HTTP协议
    动态规划0—1背包问题
    栈的链式存储结构及其基本运算的实现
  • 原文地址:https://www.cnblogs.com/BlogNetSpace/p/1275910.html
Copyright © 2020-2023  润新知