SQL Serverで正規表現を使用して文字列を置換
1697 ワード
OLEオブジェクトを使用した正規置換関数を作成します.以下は関数コードです.
注意:この関数の正常な使用を保証するには、Ole Automation Proceduresオプションを1に設定する必要があります.具体的な文は
これで、他のSQL関数と同様に、この関数を使用できます.
--1.URL SELECT dboを置き換える.RegexReplace('と思うhttp://www.csdn.netいいサイトです','(http/:///|^http/://///////)([/w-]+/.+//.+[/w-]+/.+[/w-]+/.+|[/w-]+/.+/////////+[[w-]+/[?]*)?', '$1$2$3',0)/*-----------------------------------------------------------------私はhttp://www.csdn.netいいサイトです*/--2.名前を逆さにしてRegexReplace('John Smith', '([a-z]+)/s([a-z]+)', '$2,$1',1)/* -------------------------------------- Smith,John */
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
)
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
注意:この関数の正常な使用を保証するには、Ole Automation Proceduresオプションを1に設定する必要があります.具体的な文は
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'Ole Automation Procedures', 1
RECONFIGURE
これで、他のSQL関数と同様に、この関数を使用できます.
--1.URL SELECT dboを置き換える.RegexReplace('と思うhttp://www.csdn.netいいサイトです','(http/:///|^http/://///////)([/w-]+/.+//.+[/w-]+/.+[/w-]+/.+|[/w-]+/.+/////////+[[w-]+/[?]*)?', '$1$2$3',0)/*-----------------------------------------------------------------私はhttp://www.csdn.netいいサイトです*/--2.名前を逆さにしてRegexReplace('John Smith', '([a-z]+)/s([a-z]+)', '$2,$1',1)/* -------------------------------------- Smith,John */