• 締切済み

SQLSERVER上でUPDATE文を実行するときに?

SQLSERVERでUPDATE文を実行しようとしています。 UPDATE A SET CharName = (LEFT(B.UserName, 20)) FROM A, B WHERE A.USER_CD = B.UserID これを実行しようとしているのですが、STRING、バイナリーは切り詰められました。というエラーがでます・・・。 こういう使い方はできないのでしょうか?

みんなの回答

  • ichi1123
  • ベストアンサー率20% (1/5)
回答No.4

質問番号 No.1191712 で自分が同じような質問をしています。その回答も参考になるかと思います。

noname#9100
noname#9100
回答No.3

UPDATE A SET CharName = cast(B.UserName as varchar(20)) FROM A, B WHERE A.USER_CD = B.UserID でいけます。

  • sawagani
  • ベストアンサー率73% (19/26)
回答No.2

LEFT関数ですが、「20バイト」ではなく「20文字」を取りにいきます。 UserNameに全角が入っている場合、1文字あたり2バイト使うことになるので、実際は20バイトを超えている、ということはないでしょうか?

mamemamemameko
質問者

お礼

遅くなりました!! byteと勘違いしてました。 おかげできちんととれるようになりました。 ありがとうございました。

  • sawagani
  • ベストアンサー率73% (19/26)
回答No.1

そのメッセージですが、更新対象のカラムのサイズが足りない時に出てきます。 CharNameのサイズが足りてないということはありませんか?

mamemamemameko
質問者

お礼

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

関連するQ&A