2016-12-16 1 views
0

열을 업데이트 할 때 약간의 문제가 있습니다. db가 testdb에서 복구 될 필요가있을 때, 프로덕션 db에서 문제점을 방지하기 위해 일부 필드를 변경해야합니다.두 개의 서로 다른 검색 항목이있을 때 SQL의 업데이트 문

대부분의 경우 전자 메일 주소와 웹 주소 만 조정합니다.

이제 나는이 걸을 걸었습니다. 테이블에는 URL이 채워진 열이 있습니다. 하나 개의 URL은 fairworks...로 시작하고 www.fairworks...

두 URL을 다른 시작이 변경 될 필요 :이 코드를 업데이트하려고 TEST.fairw...

:로 변경하는 그래서 Test.fairworks...

fairw.....www.fairw... 필요 그러나 어떻게 든 내가 의도하지 않는

업데이트 URL

SET Url = CASE 
     WHEN (LEFT(Url,3) = 'fai' THEN REPLACE(Url,'fair','test.fair') 
     ELSE 
     WHEN (LEFT(Url,6) = 'www.fa THEN REPLACE(Url,'www.fair', 'test.fair') 
     END 

내가 잘못 된 부분을 볼 수 없습니다.

충분한 점수가 없기 때문에 전체 코드를 추가 할 수 없습니다. //

+0

어떤 DBMS를 사용하고 있습니까? 그러나'ELSE'는 완전히 잘못된 것입니다. 그것을 제거하십시오. –

+0

SQL2012에서 작업합니다. 네가 옳아. 다른 사람은 여기서 좋지 않습니다. – aks69cw

+0

SQL은 DBMS 제품이 아닌 쿼리 언어입니다. 그리고 SQL 2012 표준도 없습니다. 현재 SQL2011 표준이 있으며 그 전에 SQL2008이있었습니다. –

답변

0

내가이 테스트를하지 않은,하지만이 같은 것을 사용할 수 있습니다 : 두 URL은 HTTP로 시작 그런데

UPDATE [YourTable] 
SET Url = 'www.fairworks' + SUBSTRING(Url, 4, LEN(Url)-4) 
WHERE LEFT(Url,4) = 'fair' 

UPDATE [YourTable] 
SET Url = 'www.fairworks' + SUBSTRING(Url, 8, LEN(Url)-8) 
WHERE LEFT(Url,8) = 'www.fair' 

을, 당신은 당신의 코드에서 아포스트로피 (직전 THEN)을 놓친 :

WHEN (LEFT(Url,6) = 'www.fa THEN REPLACE(Url,'www.fair', 'test.fair') 
+0

안녕하세요, 마이크, 고마워. 이것은 제가 시도하려고하는 것입니다. 학습에도 좋습니다. user @ - a_horse_with_no_name의 설명과 함께 CASE WHEN 코드를 수정했습니다. Update 쿼리에서 replace 문을 사용하여 게임하는 방법에 대해서도 배웠습니다. 누락 된 아포스트로피에 주목했습니다. SSMS가 누락 된 문자를 표시하는 방법 항상 좋은 0) 내 쿼리를 조정할 때 아포스트로피를 배치해야했습니다. – aks69cw

+0

이것은 이제 내 코드입니다. 나는 그것을 테스트했으며 정확히 의도 한대로 작동했습니다. 업데이트 [표] SET \t URL = 사례 (LEFT (url, 10)) = 'http : // 10'. REFRACE (Url, '. 17', '99') \t \t WHEN (LEFT (Url, 10)) = 'http : // fai'다음은 REPLACE (URL, 'http : // fai', 'http : //test.fai ') \t \t (LEFT (Url, 10)) ='http : // www '다음에 REPLACE (Url,'http : // www ','http : // test ') END – aks69cw