다음 표가 있습니다.시작 단어 바꾸기
tblInput
Id WordPosition Words
-- ----------- -----
1 1 Hi
1 2 How
1 3 are
1 4 you
2 1 Ok
2 2 This
2 3 is
2 4 me
tblReplacement tblReplacement
우리가 tblInput에서 검색해야 할 단어 을 유지하면서 tblInput
단어의 목록을 보유하고
Id ReplacementWords
--- ----------------
1 Hi
2 are
3 Ok
4 This
~ d 일치하는 것이 발견되면 우리는 그 것을 으로 대체해야합니다.
하지만 처음에는 일치하는 단어가 있으면 단어를 교체해야합니다. tblInput에서
즉
, ID 1의 경우, 대체됩니다 단어 만 'Hi'
and not 'are'
이전부터입니다 '있다'가 그것은 아닌 '어떻게' tblReplacement 목록에.
이드 2의 경우,은 대체 할 단어가 'Ok' & 'This'
입니다. 이 두
단어가 tblReplacement 테이블에 존재 '확인'을 첫 번째 단어 즉 후이기 때문에입니다
교체 , '이' 여기
목록에 먼저 이다 번째 단어ID 카테고리 2
. tblReplacement에서 사용할 수 있으며 지금은 첫 단어이므로
도 교체해야합니다.
그래서 원하는 출력 지금까지
Id NewWordsAfterReplacement
--- ------------------------
1 How
1 are
1 you
2 is
2 me
내 방법이 될 것입니다 :
;With Cte1 As(
Select
t1.Id
,t1.Words
,t2.ReplacementWords
From tblInput t1
Cross Join tblReplacement t2)
,Cte2 As(
Select Id, NewWordsAfterReplacement = REPLACE(Words,ReplacementWords,'')
From Cte1)
Select * from Cte2 where NewWordsAfterReplacement <> ''
하지만 내가 원하는 출력을 받고 있지 않다. 그것은 모든 일치 단어를 대체합니다. 필요
긴급 도움 **. (기반 SET) **
내가 정확하게 귀하의 요구 사항을 이해 couldnt는 SQL 서버를 2005
감사
당신은이 질문을하거나 반복해서 반복적으로 물어 봤습니다. 나는 거의 중복으로 닫히기를 갈망합니다. 또한 ** 문자열 조작 **을 다루고 있습니다. ** ** ** ** 당신은 집합 기반 방식으로 할 수있는 일이 아닙니다. - 문자열로 피들을 틀 필요가 있습니다. 방법은 "집합 기반"). CTE (WITH .....)를 사용하면 설정 기반으로 할 수 있습니다. 다시 : 지구상에서 무엇을 할 수 있습니까? ** 정말로 ** 원하는가? –