我有一個包含特定單詞的表。如果該字符串存在於另一個表中,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