当我插入评论时,如果他们是发誓的话,我想替换句子中的元音。 我有一张发誓说话的桌子。 (我现在表中只有2个单词,但稍后会添加更多单词)
我有一个像这样的表Badwords:
Word
----------
Luke
father
----------
现在,当我插入'卢克,我是你的父亲'我想让它回归'L-k-,我是你的第一个'
这就是我所拥有的。但它并没有取代任何东西。
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;
输出:卢克,我是你的父亲
我希望输出像这样:L-k-,我是你的f-th-r
有谁知道如何解决这个问题?
答案 0 :(得分:0)
您可以对包含该单词的表格进行更新,并通过替换表格中所有单词中的元音来设置实际字符串。
DECLARE @String VARCHAR(100) = 'Luke, I am your father'
DECLARE @AbusiveWords TABLE(ID INT,Word VARCHAR(10))
INSERT INTO @AbusiveWords (ID,Word) values (1,'Luke'),(2,'father')
UPDATE @AbusiveWords
SET @String=REPLACE(@String,Word,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Word,'A','-'),'E','-'),'I','-'),'O','-'),'U','-'))
PRINT(@string);
<强>输出:强>
L-k- , I am your f-th-r