2011-01-13 9 views
1

これは私が例えば私がvarcharmoneydecimalから変換したいいくつかの列、item_amountという列を持つSQL Server上で2008TSQL:SQL Serverの数値列を変更すると、値はどのように変換されますか?

です。

  • これらの値はどのように変換されますか?

    convert(varchar, item_amount)と同じですか? select item_amount, convert(varchar, item_amount) from <table>のようなクエリを実行すると、同じように列がレンダリングされます。

  • 切り捨ての可能性はありますか?

    varchar列に十分な文字があると仮定します(小数点の場合はmax precision for a decimal column is 38 + 1文字なので、39になります)。数値のどれもが38桁に近くなくても、3〜5桁の範囲内にあります。

  • 私はこのコマンドをテストテーブルで正常に実行してしまいました。私が嫌なことを見逃したり忘れたりしないようにしたいのです。alter table <mytable> alter column item_amount varchar(39) default '0'(これは既存のデフォルト((0))制約)。

答えて

2

あなたが入れているVARCHAR列が利用可能な正しい文字数を持っている限り、あなたは正しいです。

varcharへの金額の変更に関しては、変換が行われるため、ここでうまくいくはずです。

ソート、フィルタリングなどのために番号を使用しなくなったため、これを行うのは良い考えではないことに注意してください。

+1

私は制約に名前を付けると思います... varchar(39)constraint df_tblname_colname default '0' ...あなたが(0)に持っていたように、物事をきれいにして簡単に削除します。もう1つの問題は、10進数/金額がフルサイズに拡大され、右側に0パディングがあることです。それがあなたの後にあるかどうかわからない場合 – RichardTheKiwi

+0

お勧め! –

+0

あなたの本能は間違っているわけではありませんが、これらは基本的にETLプロセスのインポートステージングテーブルです。変換スクリプトは、データを本番テーブルに移動するときにconvert()を適切な数値型に変換します。 –

関連する問題