2

以下のクエリ結果のPeopleの場合、UniqueIDSuffix値は、文字長= 6の先行0で埋める必要があります。UniqueIDSuffixを変更した後、UniqueIDPrefix + UniqueIDSuffix=UniqueIDを介してUniqueID値を文字長=9に更新する必要があります。

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

UniqueIDPrefixascによる注文

私が持っているステートメントは次のとおりです。

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
4

1 に答える 1

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
于 2013-01-03T16:12:18.313 に答える