12

テーブルの説明フィールドから特定の文字列を削除しようとしています。この目的のために私はこの機能を作りました


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

私はSQLプログラミングに不慣れで、これを改善したいと思っています。文字列から削除して説明をクリーンアップするときにループしたい「悪い単語」のリストを含むテーブルが必要だとします。

私は1500万件のレコードを扱っているので、このプロセスは可能な限り効率的である必要があることを指摘しておく必要があります。

4

1 に答える 1

40

REPLACEを使ってみませんか?

UPDATE tableName
SET columnName = REPLACE(columnName,'specific word','');
于 2012-06-25T13:13:33.787 に答える