2016-06-23 1 views
1

以下のクエリでは、両方の条件が真である場合、最後のエントリはErrorMessageで更新されます。この可能性は、case文を使用している場合複数の文字列の検証で1つの行を連結しますか?

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) 

:1つのレコードが国以上の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

関連する問題