これは私が例えば私がvarchar
にmoney
とdecimal
から変換したいいくつかの列、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))制約)。
私は制約に名前を付けると思います... varchar(39)constraint df_tblname_colname default '0' ...あなたが(0)に持っていたように、物事をきれいにして簡単に削除します。もう1つの問題は、10進数/金額がフルサイズに拡大され、右側に0パディングがあることです。それがあなたの後にあるかどうかわからない場合 – RichardTheKiwi
お勧め! –
あなたの本能は間違っているわけではありませんが、これらは基本的にETLプロセスのインポートステージングテーブルです。変換スクリプトは、データを本番テーブルに移動するときにconvert()を適切な数値型に変換します。 –