2012-08-02 4 views
0

에서 바꾸기는 그래서 같은 제품 이름 키/값 쌍의 목록을 가지고이 같은복잡한 찾기 및 SQL

CREATE TABLE [dbo].[ProductNames] 
(
    [Key] [nvarchar](100) NULL, 
    [Value] [nvarchar](100) NULL 
) 

포함하는 값 :

'Pepsi', 'Pepsi®' 
'Coke', 'Coke®' 

내가 찾아 값을 교체해야 제품의 등록 상표가 아직없는 텍스트 필드 ... 전체 상표 문자열로 대체하십시오. 예를 들어

:

1. if 'Pepsi' is alone....it becomes 'Pepsi®' 
2. if 'Pepsi®' already exists...do nothing 

UPDATE : 등록 상표는 대체 뭔가의 한 예입니다. 다른 복수 문자 대체물도있을 수 있습니다. 따라서 더 복잡한 것이 필요할 것입니다. 예를 들어, 아마도 'Pepsi'를 감지 한 다음 키/값 행의 VALUE 부분에서 'Pepsi'를 자릅니다 ... 그런 다음 잘린 값이 이미 문자열에 있는지 확인하십시오. 그렇지 않다면, 계속해서 값을 대체하십시오 (그런 식으로).

답변

2

아마도이 솔루션이 도움이 될 것입니다. value®으로 끝나지 않고 끝에 추가하는 레코드가 업데이트됩니다. 이것에 대한 내가 쉽게 생각할 수 없다

update ProductNames 
set Value = Value + '®' 
where Value not like '%®' 
+0

답장을 보내 주셔서 감사합니다. 그러나 등록 상표는 소스 테이블에있는 것의 한 예일뿐입니다. –

0
update ProductNames set 
    Value = CASE WHEN CHARINDEX('®',value,1) = 0 then value+'®' else value end 
0

작동합니다. 각 키워드를 분리하기 위해 공백이 필요하다고 가정하고 각 특수 키워드를 반복하고이 단어의 시작, 중간 및 끝 케이스를 확인하십시오. 비즈니스 로직에서 요구하는대로 몇 단계로 작업을 분류하십시오. 비싼 예,하지만 그것은 한 가지 일입니다. 행을 추가하거나 수정할 때이 루틴을 한 번 실행하는 것이 좋습니다.