7

データをテーブルに保存するとき、末尾の値に余分なスペースが追加されます。私は、列の長さが5で、3文字の長さの値を挿入すると2つの余分なスペースが追加されていることを確認しました。どのようにこの問題を解決することができます。余分なスペースがカラムの末尾に追加されました

+0

insert文とテーブル定義を提供してください。 –

答えて

21

の代わりにCHAR(5)の列タイプが使用されていますか?

  • CHAR(x)は、常にx文字を格納する列を作成し、データをスペースで埋めます。
  • VARCHAR(x)は、挿入されたデータと一致するように文字列の長さを変更する列を作成します。
+2

+1 varcharには後ろに空白が残っていますが、ANSI_PADDINGはONに設定されています。 – gbn

+0

@gbn設定が実際に行っていることを決して調べたことはありません。私に研究をさせてくれてありがとう。 ANSI_PADDING ONであっても、ドキュメントを正しく理解していれば、VARCHAR(x)列に明示的に後置スペースを入れるだけです。 –

+0

正解ですが、[混乱](http://stackoverflow.com/search?q=user%3A27535+ansi_padding)を引き起こす可能性があります。特に、それ以降のバージョンではONになります。 – gbn

4

これはCHARデータ型のプロパティです。余分なスペースを必要としない場合は、VARCHARを使用する必要がありますが、小さなフィールドの場合は、標準CHARと比較して最小のオーバーヘッドがあります。今のところ、VARCHARCHARと同じくらい良いと信じられています。

0

CHAR変数はこの余分な埋め込みを格納しますが、代わりにVARCHAR2変数を使用する必要がありますか?

+0

SQL ServerにVARCHAR2がありません... – gbn

関連する問題