SqlServer正则特换函数

create function dbo.regexreplace
(
    @source ntext, --原字符串
    @regexp varchar(1000), --正则表达式
    @replace varchar(1000), --替换值
    @globalreplace bit = 1, --是否是全局替换
    @ignorecase bit = 0 --是否忽略大小写
)
returns varchar(1000) as
begin
    declare @hr integer
    declare @objregexp integer
    declare @result varchar(5000)

    exec @hr = sp_oacreate ‘vbscript.regexp‘, @objregexp output
    if @hr <> 0 begin
        exec @hr = sp_oadestroy @objregexp
        return null
    end
    exec @hr = sp_oasetproperty @objregexp, ‘pattern‘, @regexp
    if @hr <> 0 begin
        exec @hr = sp_oadestroy @objregexp
        return null
    end
    exec @hr = sp_oasetproperty @objregexp, ‘global‘, @globalreplace
    if @hr <> 0 begin
        exec @hr = sp_oadestroy @objregexp
        return null
    end
    exec @hr = sp_oasetproperty @objregexp, ‘ignorecase‘, @ignorecase
    if @hr <> 0 begin
        exec @hr = sp_oadestroy @objregexp
        return null
    end
    exec @hr = sp_oamethod @objregexp, ‘replace‘, @result output, @source, @replace
    if @hr <> 0 begin
        exec @hr = sp_oadestroy @objregexp
        return null
    end
    exec @hr = sp_oadestroy @objregexp
        if @hr <> 0 begin
        return null
    end

    return @result
end
go
时间: 2024-12-27 19:03:14

SqlServer正则特换函数的相关文章

sqlserver 数据库中时间函数的建立

create function [dbo].[HtoSec](@lvalue as int)RETURNS intBEGINDECLARE @temp intSet @temp = @lvalue * 60 * 60RETURN @tempEND create function [dbo].[GetTime](@dtmValue as datetime)RETURNS intBEGINDECLARE @temp intDECLARE @GMT_TIMEZONE intSET @GMT_TIMEZ

sqlserver CAST 和 CONVERT函数

1.sqlserver CAST 和 CONVERT函数 将某种数据类型的表达式显式转换为另一种数据类型.CAST 和 CONVERT 提供相似的功能. 语法 使用 CAST: CAST ( expression AS data_type ) 使用 CONVERT: CONVERT (data_type[(length)], expression [, style]) 参数 expression 是任何有效的 Microsoft SQL Server" 表达式.有关更多信息,请参见表达式. da

SQLSERVER中的 CEILING函数和 FLOOR函数

--SQLSERVER中的 CEILING函数和 FLOOR函数 --ceiling函数返回大于或等于所给数字表达式的最小整数. --floor函数返回小于或等于所给数字表达式的最大整数. --比如: --celling(12.1) 结果为 13 SELECT CEILING(12.2) --floor(12.1)结果为 12 SELECT FLOOR(12.3)

MS SqlServer 的日期格式化函数 Convert

MS SqlServer 的日期格式化函数:Convert(data_type[(length)], expression [, style])参数:data_type[(length)]代表转换的数据类型及长度,expression代表源数据表达式,style代表要转换的日期格式样式 Select CONVERT(varchar, GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar, GETDATE(), 1): 05/16/06Se

Sqlserver 正则替换函数的一种实现

--函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255), --替换模板 @replacestr VARCHAR(255), --替换后的字符串 @IgnoreCase INT = 0 --0区分大小写 1不区

SQLServer中间接实现函数索引或者Hash索引

本文出处:http://www.cnblogs.com/wy123/p/6617700.html SQLServer中没有函数索引,在某些场景下查询的时候要根据字段的某一部分做查询或者经过某种计算之后做查询,如果使用函数或者其他方式作用在字段上之后,就会限制到索引的使用,不过我们可以间接地实现类似于函数索引的功能.另外一个就是如果查询字段较大或者字段较多的时候,所建立的索引就显得有点笨重,效率也不高,就需要考虑使用一个较小的"替代性"字段做等价替换,类似于Hash索引,本文粗浅地介绍两

oracle中的装换函数

日期装换成字符的函数:TO_CHAR(date[,fmt[,params]]) 默认格式:DD-MON-RR 参数说明: date:将要装换的日期 fmt:装换的格式 params:日期的语言(可以不写)例子: SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2016-04-21 07:55:54 字符型转换成日期的函数: TO_DATE

SqlServer存储过程中常用函数及操作

1.case语句 用于选择语句 SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN 'Mountain' WHEN 'T' THEN 'Touring' WHEN 'S' THEN 'Other sale items' ELSE 'Not for sale' END, Name FROM Production.Product ORDER BY ProductNumber; 用于u

easyui扩展正则验证,函数验证

用easyui做业务系统,对于默认的几个验证规则,肯定是不够的,难免会增加几种规则.可是问题来了,往往是我们在开发会遇到很多各种各样的验证,时间久了才发现,这些扩展的正则无非就是添加一个正则验证规则,那我为啥不将正则放到前端呢?想到这个说干就干,于是有了REGEX这个验证规则,愉快的调用几次后,感觉这功能还不错,心里贼爽了下.一段时间后,发现有些验证居然还和数据业务有关系,这下问题又来,难道我又要些一堆的规则!到底能不能象我的正则验证一样统一呢.果不其然,在苦思冥想半小时后,我这FUN验证规则浮