トップページ >  SQL Server >  CHARとVARCHARの違い | SQL Server
初版2012/06/04: 最終更新日2012/07/20
  CHARとVARCHARの違い | SQL Server
目次
CHARとVARCHARの違い
VARCHARの値~~の変換がint型の列でオーバーフローしました。整数値の最大値を超えました。
VARCHAR(-1)
CHARとVARCHARの違い
SQL ServerでCHARとVARCHARがあります。CHAR列は8バイトの場合、1バイトのデータを入れると残り7バイトは空白が入ります。
VARCHARの場合は、8バイトの場合に1バイトのデータを入れると空白は入れられずに1バイトデータとなります。

VARCHARの値~~の変換がint型の列でオーバーフローしました。整数値の最大値を超えました。
char(10)のカラムに対してシングルクォーテーションをつけずにSQL発行します。
SELECT *
FROM   T_SYUKKA
WHERE  SYUKKA_NO = 1234567890
このSQLを発行するとエラーとなります。これはint型の10桁のため、最大値を越えてしまったから発生するエラーです。
このような場合はシングルクォーテーションで囲む必要があります。

もし、SYUKKA_NOがCHAR(3)だとしたら上記のSQLを発行してもエラーとなりません。これは3桁なのでそもそもオーバーフローにならないようです。

VARCHAR(-1)
VARCHAR(-1)は、VARCHAR(max)と同じです。ツールによって表示の仕方が違うようです。