2011-01-13 67 views
1

這是SQL Server上2008TSQL:如何在sql server中更改數字列時轉換值?

我有幾個列我想從moneydecimal轉換爲varchar,例如列名爲item_amount

  • 這些數值將如何轉換?

    它會和convert(varchar, item_amount)一樣嗎?運行像select item_amount, convert(varchar, item_amount) from <table>這樣的查詢可以呈現相同的列,這是我期望和想要的。

  • 我應該從可能的截斷中安全,對嗎?

    假設varchar列中有足夠的字符(這將是39,因爲max precision for a decimal column is 38 + 1字符爲小數點)。沒有一個數值甚至接近38個數字,大部分在3-5個範圍內。

  • 我已經在測試表上成功地運行了這個命令,並且想確保我沒有忽略或忘記那些將要擰我的東西:alter table <mytable> alter column item_amount varchar(39) default '0'(這是刪除現有的默認((0))約束)。

回答

2

關於完成轉換的方式,只要您要放入的VARCHAR列具有可用的字符數,您將被設置爲轉爲正確。

關於您對varchar的金額更改,您應該在此處處理,因爲它將進行轉換。

我只需要注意,這聽起來不是一個好主意,因爲您不再與數字進行排序,過濾等相互作用......但只是一個音符。

+1

一個側面說明,我將命名約束... varchar(39)約束df_tblname_colname默認爲'0'...它使事情保持乾淨並容易丟棄,因爲您必須(0)。另一個問題是,十進制/貨幣是擴大到全尺寸,右邊填充0。不知道這是你的後 – RichardTheKiwi 2011-01-13 22:23:52