我有一个包含特定单词的表。如果该字符串存在于另一个表中,Sql会替换元音
现在,当我插入一个新的职位,我想更换元音在单词表中包含被插入之前的字符串。所以这就是为什么我需要使用触发器功能来代替插入。 我得到这个至今:
Create TRIGGER trChangeAbusiveWord
ON Post
INSTEAD OF INSERT
AS
BEGIN
Declare @abusiveWord nvarchar(max)
Declare @correctedWord nvarchar(max)
Select @abusiveWord = b.Woord FROM Scheldwoorden b WHERE exists
(select Message FROM inserted a where a.Message like '%' + b.Woord + '%')
Select @correctedWord = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@abusiveWord, 'A', '*'), 'E', '*'), 'O', '*'), 'U', '*'), 'I', '*')
Select Replace(Message, @abusiveWord, @correctedWord) FROM Message b
When done changed words, insert query here.
END
现在,当我插入此消息:
INSERT into Post(Id_User, Id_Topic, Titel, Message) VALUES (7,1, 'TriggerMe', 'Hi im bear and I want to cook a nice meal')
我想更改消息“你好IM B - R和我要到C - KA漂亮的米 - L”
但随着我走到这一步,查询什么,它只是改变了第一个字是这样的:
‘嗨IM b ** R和我想煮一顿美餐’
如果说我的理解是正确的,这是你在想什么。 1. ** Scheldwoorden **是一个包含特定单词列表的表格。 2. **插入**是包含整个字符串的表格_“你好,我想做一顿美餐”_ 因此,这里下面的select查询只返回一条记录到变量** @ abusiveWord * * 'Select @abusiveWord = b.Woord FROM Scheldwoorden b WHERE exists' '(select Inhoud FROM inserted a where a.Inhoud like'%'+ b.Woord +'%')' 因此它只替换单词_Bear_因为它被存储到变量中。 – Joby
@Joby是的,这是正确的,但我不能让它用多个词 – Jeffreydww
字符串操作真的不是SQL的强项 - 我怀疑这会更容易在代码中完成。 – Bridge