2013-01-03 4 views
2

아래의 쿼리 결과에서 다음과 같은 사람은 문자 길이가 6 인 경우 UniqueIDSuffix 값 앞에 0을 덧붙여 야합니다. UniqueIDSuffix 수정 후 UniqueID 값을 UniqueIDPrefix를 통해 문자 길이 = 9로 업데이트해야합니다 UniqueIDPrefix 오름차순으로 + UniqueIDSuffix =가 UniqueIDcase 문을 사용하여 필드 업데이트

select * from cph..cppat (nolock) where 
UniqueIDPrefix is not null and 
UniqueIDPrefix <> 'VIS' and len(UniqueIDSuffix) < 6 

위해

내가 가진 문은 다음과 같습니다

SET UniqueIDsuffix = 
     (CASE 
      WHEN UniqueIDsuffix = 3 THEN '000' + UniqueIDsuffix ELSE 
      When UniqueIDsuffix = 4 THEN '00' + UniqueIDsuffix ELSE 
      WHEN UniqueIDsuffix = 5 Then '0' + UniqueIDsuffix ELSE 
      WHEN UniqueIDsuffix = 6 THEN UniqueIDsuffix ELSE 
      ) 
where UniqueIDPrefix is not null and UniqueIDPrefix <> 'VIS' 
and len(UniqueIDSuffix) < 6 

답변

3

당신 갱신 진술이 누락되었습니다. . . 당신은 외부의 else 진술을 가지고있다. . . 당신이 비교에서 len() 기능 누락 :

update cph..cppat 
    SET UniqueIDsuffix = 
      (CASE WHEN len(UniqueIDsuffix) = 3 THEN '000' + UniqueIDsuffix 
        When len(UniqueIDsuffix) = 4 THEN '00' + UniqueIDsuffix 
        WHEN len(UniqueIDsuffix) = 5 Then '0' + UniqueIDsuffix 
        WHEN len(UniqueIDsuffix) = 6 THEN UniqueIDsuffix 
      ) 
    where UniqueIDPrefix is not null and UniqueIDPrefix <> 'VIS' and len(UniqueIDSuffix) < 6 

그런데를, 당신이 표현할 수있는이 더 간단하게 :

update cph..cppat 
    SET UniqueIDsuffix = right('0000000'+UniqueIDSuffix, 6) 
    where UniqueIDPrefix is not null and UniqueIDPrefix <> 'VIS' and len(UniqueIDSuffix) < 6 
관련 문제