如果你需要一個高性能的解決方案,它可以很容易地使用eval SQL.NET做
免責聲明:我是這個項目的所有者Eval SQL.NET
庫讓你直接在SQL中使用C#語法。
DECLARE @tableMessage TABLE (Msg VARCHAR(250))
DECLARE @tableReplace TABLE
(
Original_Word VARCHAR(50) ,
Replace_Word VARCHAR(50)
)
INSERT INTO @tableMessage
(Msg)
VALUES ('A test to replace FromWord1 and FromWord2!'),
('FromWord1FromWord1FromWord1 FromWord1 FromWord2')
INSERT INTO @tableReplace
(Original_Word, Replace_Word)
VALUES ('FromWord1', 'ToWord1'),
('FromWord2', 'ToWord2')
DECLARE @sqlnet SQLNET = SQLNET::New('')
DECLARE @sql VARCHAR(MAX) = 'template'
DECLARE @pos VARCHAR(10) = '0';
-- CREATE the sql and set parameter value
SELECT @sql = @sql + '.Replace(old_' + @pos + ', new_' + @pos + ')' ,
@sqlnet = @sqlnet.ValueString('old_' + @pos, Original_Word)
.ValueString('new_' + @pos, Replace_Word) ,
@pos = CAST(@pos AS INT) + 1
FROM @tableReplace
-- SET the code to evaluate
-- template.Replace(old_0, new_0).Replace(old_1, new_1)
SET @sqlnet = @sqlnet.Code(@sql).Root();
-- Evaluate the code
SELECT Msg ,
@sqlnet.ValueString('template', Msg).EvalString()
FROM @tableMessage AS A
無需使用攻擊性的話作爲例子 – Ferrybig
確實[Bericht]只包含一個詞,我們可以在「黑名單」的話加入這個領域或做[Bericht]包含許多單詞和任何每次「黑名單「的單詞應該被刪除(這將需要對所有黑名單單詞進行遞歸循環)? – Ralph
它可以容納更多的單詞,, –