2016-06-23 4 views
1

아래 쿼리에서 두 조건이 모두 참이면 ErrorMessage에서 마지막 항목이 업데이트됩니다. 이 수는 case 문을 사용하는 경우여러 문자열 유효성 검사를 사용하여 단일 행을 연결 하시겠습니까?

update A  
set ErrorMessage =  
(  
case when len(Country) > 3 then 'Invalid Country'   
when len(HR_DOMAIN_CODE) != 3 then 'Invalid HR_DOMAIN_CODE'   
else NULL  
end) 

: 하나 개의 레코드는 국가 3 개 이상의 문자가와 HR_DOMAIN_Code의 길이가 3 같지 않은 경우, ErrorMessage가이 '잘못된 나라'& '잘못된 HR_DOMAIN_CODE'과 같이해야합니까?

답변

2

당신은 두 조건을 처리하기 위해 다른 WHEN를 추가 할 수 있습니다 : 당신은 확인하기 위해 여러 조합을 일단

UPDATE A 
SET ErrorMessage = 
    CASE 
     WHEN LEN(Country) > 3 AND LEN(HR_DOMAIN_CODE) != 3 THEN 'Invalid Country & Invalid HR_DOMAIN_CODE' 
     WHEN LEN(Country) > 3 THEN 'Invalid Country' 
     WHEN LEN(HR_DOMAIN_CODE) != 3 THEN 'Invalid HR_DOMAIN_CODE' 
     ELSE NULL 
    END 

그러나, 위의 매우 복잡 할 것입니다. 나의 제안은 각각의 조건을 표현하는 별도의 CASE 표현을 사용하는 것이다.

+0

몇 가지 조건이있을 때 잘 작동하지만 30 이상이 있으며 그 조합이 정신 나간 것입니다. – Sharktooth

+0

@Sharktooth Understood. 내 업데이트를 참조하십시오. –

+1

이것이 작동합니다! 고맙습니다. 톤 펠릭스. – Sharktooth

관련 문제