回覆列表
  • 1 # 使用者1430807591406

    Create Function [dbo].[IsMatch](@Reg Varchar(1000),@Source Varchar(4000))

    returns sql_variant

    As

    Begin

    Declare @Err Int

    Declare @obj Int

    Declare @Rst sql_variant

    EXEC @Err=Sp_OACreate "VBScript.RegExp",@obj OUTPUT

    If @Err0 GoTo LB

    EXEC @Err=Sp_OASetProperty @obj,"Pattern",@Reg

    If @Err0 GoTo LB

    EXEC @Err=Sp_OASetProperty @obj,"Global","True"

    If @Err0 GoTo LB

    EXEC @Err=Sp_OASetProperty @obj,"IgnoreCase","False"

    If @Err0 GoTo LB

    EXEC @Err=Sp_OAMethod @obj,"Test",@Rst OUTPUT,@source

    If @Err0 GoTo LB

    EXEC @Err=Sp_OADestroy @obj

    If @Err0 GoTo LB

    Return @Rst

    LB:

    EXEC Sp_OADestroy @obj

    RETURN Null

    End

    --字串匹配的

    Select dbo.IsMatch("\d","12345")

    Create Function [dbo].[MyReplace](@Reg Varchar(1000),@Source Varchar(4000),@Str Varchar(1000))

    returns sql_variant

    As

    Begin

    Declare @Err Int

    Declare @obj Int

    Declare @Rst sql_variant

    EXEC @Err=Sp_OACreate "VBScript.RegExp",@obj OUTPUT

    If @Err0 GoTo LB

    EXEC @Err=Sp_OASetProperty @obj,"Pattern",@Reg

    If @Err0 GoTo LB

    EXEC @Err=Sp_OASetProperty @obj,"Global","True"

    If @Err0 GoTo LB

    EXEC @Err=Sp_OASetProperty @obj,"IgnoreCase","False"

    If @Err0 GoTo LB

    EXEC @Err=Sp_OAMethod @obj,"Replace",@Rst OUTPUT,@source,@Str

    If @Err0 GoTo LB

    EXEC @Err=Sp_OADestroy @obj

    If @Err0 GoTo LB

    Return @Rst

    LB:

    EXEC Sp_OADestroy @obj

    RETURN Null

    End

    --字串替換的

    select dbo.MyReplace("\d","123A454","")

    --字串提取的,這種方法不會搞

    --這兩個函式需要開啟Ole Automation Procedures配置

    /*

    exec sp_configure "show advanced options",1

    reconfigure

    exec sp_configure "Ole Automation Procedures",1

    reconfigure

    exec sp_configure "show advanced options",0

    reconfigure

    */

  • 2 # 使用者1465424935672

    SQL中不能使用正則表示式,但是可以使用萬用字元來達到類似效果

    1 % 包含零個或更多字元的任意字串

    示例:WHERE title LIKE "%computer% " 將查詢處於書名任意位置的包含單詞 computer 的所有書名。

    2 _(下劃線) 任何單個字元

    示例:WHERE au_fname LIKE "_ean " 將查詢以 ean 結尾的所有 4 個字母的名字(Dean、Sean 等)。

    3 [] 指定範圍中的任何單個字元

    示例:WHERE au_lname LIKE "[C-P]arsen " 將查詢以arsen 結尾且以介於 C 與 P 之間的任何單個字元開始的 作者姓氏,例如,Carsen、Larsen、Karsen 等

    4 [^] 不屬於指定範圍中的任何單個字元,與 [] 相反

    示例:WHERE au_lname LIKE "de[^l]% " 將查詢以 de 開始且其後的字母不為 l 的所有作者的姓氏。

  • 中秋節和大豐收的關聯?
  • 2005年出生6月27日12點30分男孩是什麼命運?