2016-11-11 2 views
0

SQL의 문자열 값에서 특정 텍스트를 제거해야합니다.사이의 문자 제거 SQL

나는 다양한 CHARINDEXLEN 조합을 시도했지만 잘못 알고 있습니다!

나는 이름이 들어있는 이름 필드가 있습니다. 필드 중 일부는 ()의 텍스트에 추가 한

예 :.

Smith (formerly Jones) 

내가 괄호 안에 전체 섹션을 제거해야합니다. 대괄호 자체는 물론 불행하게도 때로는 값은

Smith (formerly Jones) Reeves 

그래서 난 그냥 이후 (에서 모든 것을 제거 할 수 없습니다 수 있습니다!

답변

1

여기에는 두 가지 예가 있습니다. @StartIndex@EndIndex 변수를 선언하지 않고이 작업을 수행 할 수 있지만 명확하게하기 위해이 변수를 사용했습니다. 당신이 (즉, 귀하의 질문의 일부가 아닌 이후) "A"와 "테스트"사이에 두 개의 공백으로 끝낼 수 있도록이 코드, 괄호 앞이나 뒤에 공백을 제거하지 않는

DECLARE @StartIndex int, @EndIndex int; 
DECLARE @Str varchar(100); 
SET @Str = 'This is a (sentence to use for a) test'; 

SELECT @StartIndex = CHARINDEX('(', @Str, 0), @EndIndex = CHARINDEX(')', @Str, 0); 

SELECT SUBSTRING(@Str, 0, @StartIndex) + SUBSTRING(@Str, @EndIndex + 1, LEN(@Str) - @EndIndex) AS [Method1], 
    LEFT(@Str, @StartIndex - 1) + RIGHT(@Str, LEN(@Str) - @EndIndex) AS [Method2]; 

참고.

예를 들어 @Str에 괄호가 없으면 오류가 발생할 수있는 추가 오류 검사가 실제로이 코드를 사용하기 전에 포함되어야합니다.