- ベストアンサー
varchar型の入力できる最大文字数について
varcharでサイズを8000にしたフィールドに1000文字(例えば’aaa・・・「a」を1000文字・・・’)INSERTした後にそのフィールドをSELECTすると256文字しか入っていません。どうしてなんでしょうか? SELECT、INSERTなどのSQLの実行は”クエリ アナライザ”や”SQL Server Enterprise Manager”で試しました。 SQLServer初心者です。何卒宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
使用しているツールの側で、文字列の受け取りバッファの大きさを256文字分しか用意していないのかもしれません。 そのvarcharフィールドに対して SELECT LEN(そのフィールド) FROM テーブル を実行すると、そのフィールドの中の文字列の長さが返りますが、それも256でしょうか。 もし上記SELECTの結果が256ではない(もっと大きい)場合は、256文字しか表示されないのはツール側の受け取りバッファが小さいだけで、実際に記録されている文字列はもっと長いということになります。 #SQL Server 6.5までvarcharの長さは255文字までに制限されていましたが、SQL Server 7.0以降ではvarcharの長さは8000文字まで使用できます。
その他の回答 (1)
- zzen
- ベストアンサー率23% (9/38)
varchar型は最大255バイトです。それ以上必要な場合は、image型かtext型を使用しますが、いろいろと制限もあります。 用途によりますが、大きなデータを管理する必要があるのであれば、ファイルパス名のみ格納し、実態はファイルをアクセスするなどの工夫も必要です。
補足
ご回答ありがとうございます。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_da-db_7msw.asp には「varcharは8000文字以内の可変長・・・」とあり日本語文字列を入れても3000~4000文字は入るのではないかと思ったのですが、意味が違うのでしょうか?それともこのリファレンスを参考にすることが全くの見当違いなのでしょうか? 再質問で申し訳ありませんが宜しくお願い致します。
お礼
ご回答ありがとうございます。 早速「SELECT LEN・・・」を試したところ256以上の数字(実際にINSERTしたデータ長)が表示されました(SQL Serverのバージョンは8.0)。 そこで社内の凄腕プログラマに相談して色々試したところ以下のような結果になりました。 ●SQL クエリ アナライザ ・・・ 256まで ●Borland SQL Explorer ・・・ 256以上(入力したデータ長) ●Access(ODBC経由)・・・ 256以上 ツール側の問題のようです。