2011-01-13 44 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

相关问题