- 締切済み
SQLSERVER上でUPDATE文を実行するときに?
SQLSERVERでUPDATE文を実行しようとしています。 UPDATE A SET CharName = (LEFT(B.UserName, 20)) FROM A, B WHERE A.USER_CD = B.UserID これを実行しようとしているのですが、STRING、バイナリーは切り詰められました。というエラーがでます・・・。 こういう使い方はできないのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ichi1123
- ベストアンサー率20% (1/5)
回答No.4
質問番号 No.1191712 で自分が同じような質問をしています。その回答も参考になるかと思います。
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バイトを超えている、ということはないでしょうか?
- sawagani
- ベストアンサー率73% (19/26)
回答No.1
そのメッセージですが、更新対象のカラムのサイズが足りない時に出てきます。 CharNameのサイズが足りてないということはありませんか?
質問者
お礼
ご回答ありがとうございます。 CharNameが20byteで更新したいものが40byteだったため、LEFT関数で20byteとってるんですけど・・・ これだとだめなんですかね・・・
お礼
遅くなりました!! byteと勘違いしてました。 おかげできちんととれるようになりました。 ありがとうございました。