2017-05-26 20 views
0

コメントを挿入するときに、誓いの言葉であれば、文中の母音を置き換えたいと思います。 私は誓いの言葉でテーブルを持っています。 (私は今、テーブルにのみ2つの単語を持っているが、より後でそこに追加されます)SQLの置換機能が機能しない

私はこのようなテーブルBADWORDSている:私は挿入すると

Word 
---------- 
Luke 
father 
---------- 

今すぐ「ルークを、私はあなたの父です」私はそれを返そうとしている 'Lk-、私はあなたのf番目の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だ

は、この問題を解決する方法を誰でも知っています??

+3

はあなたがデータベース内の恒久*この*を行うことを望みますか?新しい悪い言葉が6ヶ月の時間に追加されるとどうなりますか?すべてのデータを再処理する必要があります。感性が1年で変わり、「父親」が受け入れられるとどうなるでしょうか?あなたはあなたの堕落したフォームを元に戻す必要があります(実際に誰かが実際に入力してf-th-rを入力し、意味していた場合、元のものを実際に変更します)。私は強く、あなたが提示した実際のテキストを保存し、プレゼンテーションの時点でこの置換を実行することを強くお勧めします。*現行の "悪い言葉"のセットを使用してください。 –

+2

(トリガーは、 0,1または**複数の**行を含むことができます) –

+1

また、文字列から単語を解析していません。 "clam"がいたずらであるとき、 "Rodgerの宣言は心のこもった"とはどういうことでしょうか?重複する単語をどのように扱いたいのですか? 「ラグ」と「ベルーガ」の両方が攻撃的であれば? – HABO

答えて

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 
+0

これは提供されたサンプルデータで動作しますが、他のインスタンスも置き換えます。 HABOが上で提案したベルガとラグの例を考えてみましょう。テーブルに(3、 'ラグ')を追加して上の文字列を「ルーク、私はあなたの父ベルーラの鯨です」に変更します。たとえそれが悪い言葉のリストに載っていなくても、それはベルガを変えるでしょう。 –

関連する問題