SQL2000:使用正则表达式
+展开
-SQL
/*
功能:实现正则表达式替换
调用示例:
select dbo.fn_RegexReplace('sdfasfjksdjfa12k232132134324lsdjlfka','[a-z]','',1,1) --替换所有字母
/ --select dbo.fn_RegexReplace(columnname,'<\/*[^<>]*>','',1,1) from table --替换所有HTML代码
CREATE function fn_RegexReplace
(
@source ntext, --原字符串
@regexp varchar(1000), --正则表达式
@replace varchar(1000), --替换值
@globalReplace bit = 0, --是否是全局替换
@ignoreCase bit = 0 --是否忽略大小写
)
returns varchar(8000)
AS
begin
declare @hr integer,
@objRegExp integer,
@result varchar(8000)
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
功能:实现正则表达式替换
调用示例:
select dbo.fn_RegexReplace('sdfasfjksdjfa12k232132134324lsdjlfka','[a-z]','',1,1) --替换所有字母
/ --select dbo.fn_RegexReplace(columnname,'<\/*[^<>]*>','',1,1) from table --替换所有HTML代码
CREATE function fn_RegexReplace
(
@source ntext, --原字符串
@regexp varchar(1000), --正则表达式
@replace varchar(1000), --替换值
@globalReplace bit = 0, --是否是全局替换
@ignoreCase bit = 0 --是否忽略大小写
)
returns varchar(8000)
AS
begin
declare @hr integer,
@objRegExp integer,
@result varchar(8000)
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
加支付宝好友偷能量挖...