2012-06-25 2 views
7

테이블의 설명 필드에서 특정 문자열을 제거하려고합니다. 이를 위해 나는이 기능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 


내가 SQL 프로그래밍에 새로운 오전이 개선 싶습니다을 만들었습니다. 설명을 정리할 때 문자열에서 제거하고 싶었던 '나쁜 단어'목록이 포함 된 표를 원한다고 가정합니다.

1500 만개의 레코드를 처리 할 때이 프로세스가 가능한 한 효율적이어야한다는 것을 지적해야합니다.

+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

부분 단어를 확인하려면 앞뒤 공백으로 채울 수 있습니다. –

관련 문제