プロが教える店舗&オフィスのセキュリティ対策術

SQLSERVERでUPDATE文を実行しようとしています。

UPDATE A
SET CharName = (LEFT(B.UserName, 20))
FROM A, B
WHERE A.USER_CD = B.UserID

これを実行しようとしているのですが、STRING、バイナリーは切り詰められました。というエラーがでます・・・。

こういう使い方はできないのでしょうか?

A 回答 (4件)

質問番号 No.1191712 で自分が同じような質問をしています。

その回答も参考になるかと思います。
    • good
    • 0

UPDATE A


SET CharName = cast(B.UserName as varchar(20))
FROM A, B
WHERE A.USER_CD = B.UserID

でいけます。
    • good
    • 0

LEFT関数ですが、「20バイト」ではなく「20文字」を取りにいきます。


UserNameに全角が入っている場合、1文字あたり2バイト使うことになるので、実際は20バイトを超えている、ということはないでしょうか?
    • good
    • 0
この回答へのお礼

遅くなりました!!
byteと勘違いしてました。

おかげできちんととれるようになりました。
ありがとうございました。

お礼日時:2005/01/31 16:28

そのメッセージですが、更新対象のカラムのサイズが足りない時に出てきます。


CharNameのサイズが足りてないということはありませんか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
CharNameが20byteで更新したいものが40byteだったため、LEFT関数で20byteとってるんですけど・・・
これだとだめなんですかね・・・

お礼日時:2005/01/14 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!