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百万のレコードを扱っているので、できるだけ効率的である必要があることを指摘しておきます。
SQLサーバーには '置換'機能があり、それを使用して ''で置き換えることをお勧めします。ここでは[MSFTのリンク](http://msdn.microsoft.com/en-us/library/ms186862.aspx)あなたがパフォーマンスを心配している場合は、より高速に動作するように見える正規表現を調べることができます。 – xQbert
バニラ交換機能を使用すると、単語の一部が削除され、迷惑な文字列を残すことになることが懸念されます。私が "Run"を置き換えて "Running"を見つけたように、私は "ning"のままになります。 正規表現を使い始めるのは大変なことですが、データベースにさまざまな特権が必要で、コンピュータに追加のソフトウェア(Visual Studio?)をインストールする必要があることを理解しています。 – user1075081
私は懸念を理解し、感謝します。しかし、それはあなたが完全に避けられない問題です。この問題を真に軽減する唯一の方法は、すべてのエントリの目視検査です。承認プロセスを経てあなたのテクニックを使っても、文の終わりに問題に遭遇します。悪い言葉。 – xQbert