當我插入一條評論時,如果他們是發誓的單詞,我想替換句子中的元音。 我有一個發誓詞的表。 (我現在只有2個表中的話,但會有更多的稍後添加)SQL替換函數不起作用
我有一個表BADWORDS這樣的:
Word
----------
Luke
father
----------
現在,當我插入「盧克,我是你爸爸」我希望它返回'Lk-,我是你的F-th-r'
這就是我所得到的。但它不能取代任何東西。
CREATE TRIGGER replace_badWords ON comment
INSTEAD OF INSERT
AS
DECLARE @word AS NVARCHAR(50);
DECLARE @wordCursor AS CURSOR;
DECLARE @text VARCHAR(500) = (SELECT I.messageText FROM inserted I)
SET @wordCursor = CURSOR FOR
SELECT word FROM Badwords;
OPEN @wordCursor;
FETCH NEXT FROM @wordCursor INTO @word;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @text=REPLACE(@text,@word,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@word,'A','-'),'E','-'),'I','-'),'O','-'),'U','-'))
FETCH NEXT FROM @wordCursor INTO @word;
END;
INSERT INTO Comment(messageText) values(@text)
CLOSE @wordCursor;
DEALLOCATE @wordCursor;
輸出:盧克,我是你爸爸
我所要的輸出是這樣的:LK-,我是你的第f-R
有誰知道如何解決這個問題??
你確定要這麼做*永久*數據庫裏面?如果在6個月內添加新的不良詞,會發生什麼情況?您必須重新處理所有數據。如果情感在一年內變化而「父親」變得可以接受會發生什麼?你必須撤消你的損壞表格(更糟糕的是,如果某人真的進入了並且意味着「f-th-r」 - 你實際上改變了他們的原創)。我強烈建議存儲用戶提供的實際文本,並且僅在演示時執行此替換 - 使用*當前*一組「壞詞」 –
(此外,您的觸發器由於其他原因而被打破 - 「插入」可以包含0,1或**多個**行) –
您也不會從字符串中解析單詞。當「蛤蜊」調皮時,「Rodger的聲明是衷心的」會發生什麼?您想如何處理重疊的單詞,例如如果「lug」和「beluga」都是冒犯性的? – HABO