2012-06-25 6 views
7

テーブルの説明フィールドから特定の文字列を削除しようとしています。この目的を達成するために、私はSQLプログラミングに新しいですし、これを改善したいと思い、この機能T-SQLを使用すると、指定した単語が文字列から削除されます。


CREATE FUNCTION fnDescriptionClean 
(@strDescription varchar(50)) 
RETURNS varchar(50) 
AS 
BEGIN 

declare @Return varchar(50) 
declare @badword varchar(50) 

set @badword = 'Front' 
set @strDescription = CASE 

--Remove from mid string 

WHEN @strDescription LIKE '% ' + @Badword +' %' THEN REPLACE(@strDescription,' ' + @Badword + ' ',' ') 

--Remove from start of string 

WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 

--Remove from end of string 

WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 
ELSE @strDescription END 

set @badword = 'Right' 
set @strDescription = CASE 

WHEN @strDescription LIKE '% ' + @Badword +' %' THEN REPLACE(@strDescription,' ' + @Badword + ' ',' ') 
WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 
WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 
ELSE @strDescription END 

RETURN  @strDescription 
end 

を行っています。私が文字列から削除したいと思っていた「悪い言葉」のリストを含んだテーブルを持っていて、説明を掃除するときにそれをループしたいとしたら、

私は、このプロセスは、私が15百万のレコードを扱っているので、できるだけ効率的である必要があることを指摘しておきます。

+2

SQLサーバーには '置換'機能があり、それを使用して ''で置き換えることをお勧めします。ここでは[MSFTのリンク](http://msdn.microsoft.com/en-us/library/ms186862.aspx)あなたがパフォーマンスを心配している場合は、より高速に動作するように見える正規表現を調べることができます。 – xQbert

+0

バニラ交換機能を使用すると、単語の一部が削除され、迷惑な文字列を残すことになることが懸念されます。私が "Run"を置き換えて "Running"を見つけたように、私は "ning"のままになります。 正規表現を使い始めるのは大変なことですが、データベースにさまざまな特権が必要で、コンピュータに追加のソフトウェア(Visual Studio?)をインストールする必要があることを理解しています。 – user1075081

+1

私は懸念を理解し、感謝します。しかし、それはあなたが完全に避けられない問題です。この問題を真に軽減する唯一の方法は、すべてのエントリの目視検査です。承認プロセスを経てあなたのテクニックを使っても、文の終わりに問題に遭遇します。悪い言葉。 – xQbert

答えて

18

なぜREPLACEを使用しないのですか?

UPDATE tableName 
SET columnName = REPLACE(columnName,'specific word',''); 
+0

部分的な単語をチェックする場合は、先頭と末尾のスペースでこれを埋め込むこともできます。 –

関連する問題