2011-12-30 3 views
1

문자열 (예 : 5 ") 내에서 숫자 값 + 따옴표를 찾아야합니다. 일단 찾으면 인용 부호를"파운드 "로 바꾸어야합니다. 불행히도 문자열은 복잡합니다 : 샘플 문자열RegExp 찾기 및 특정 문자 바꾸기

Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights. 

내가

SELECT REPLACE(REPLACE('Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.', '%[^0-9]"%', 'pound'), '"', 'pound') 

을 시도하지만 '파운드'로 모든 따옴표를 대체합니다.

답변

4

이것은 " 다음 숫자의 첫 번째 항목을 찾아 pound"을 대체합니다.

PATINDEX

하나 이상있는 경우

STUFF

declare @s varchar(100) 
set @s = 'Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.' 
select stuff(@s, patindex('%[0-9]"%', @s)+1, 1, ' pound') 
당신은 while 루프에 넣을 수 있습니다.

while patindex('%[0-9]"%', @s) > 0 
begin 
    set @s = stuff(@s, patindex('%[0-9]"%', @s)+1, 1, ' pound') 
end 
+0

잘 작동합니다. .. WHILE은 PATINDEX 기본값 0으로 몇 가지 오류를 수정했습니다. –

0

당신은 당신이 원하는 변화에 대한 결정 알고리즘을 표현 할 수없는 경우 만들기 위해 정규 표현식을 구현으로 작성할 수는 없습니다.

두 개의 대치 식을 작성했습니다. 하나는 숫자 다음에 따옴표 만 바꾸고 다른 하나는 모든 따옴표를 바꿉니다. 당신은 CLR을 사용할 수있는 경우

+0

나는 정규 표현식 '%의 [^ 0-9] "%에 포함 된 따옴표의 위치를 ​​찾기 위해 코드를 시도 후 해당 특정 문자 위치에 대체하고. 그러나 작동하지 있어요 .. –