Sqlserver 正则替换函数的一种实现
时间:2021-07-01 10:21:17
帮助过:3人阅读
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不区分大小写
)
RETURNS VARCHAR(
8000)
AS
BEGIN
DECLARE @objRegex INT,
@retstr VARCHAR(
8000)
--创建对象
EXEC sp_OACreate
‘VBScript.RegExp‘,
@objRegex OUT
--设置属性
EXEC sp_OASetProperty
@objRegex,
‘Pattern‘,
@pattern
EXEC sp_OASetProperty
@objRegex,
‘IgnoreCase‘,
@IgnoreCase
EXEC sp_OASetProperty
@objRegex,
‘Global‘,
1
--执行
EXEC sp_OAMethod
@objRegex,
‘Replace‘,
@retstr OUT,
@string,
@replacestr
--释放
EXECUTE sp_OADestroy
@objRegex
RETURN @retstr
END
GO
用法示例(替换空格):
--替换空格
print dbo.RegexReplace(‘0 _ 276 _ 5‘, ‘\s+‘, ‘‘,1)
--输出:0_276_5
Sqlserver 正则替换函数的一种实现
标签: