TSQL:在sql server中更改数字列时如何转换值?

TSQL:在sql server中更改数字列时如何转换值?,sql,sql-server,tsql,sql-server-2008,alter-column,Sql,Sql Server,Tsql,Sql Server 2008,Alter Column,这是在SQLServer2008上 我有几个列要从money和decimal转换为varchar,例如一个名为item\u amount的列 这些值将如何转换 它是否与转换(varchar,项目金额)相同?运行类似于selectitem\u amount,convert(varchar,item\u amount)这样的查询,从中转换(varchar,item\u amount)将以相同的方式呈现列,这正是我所期望和想要的 我应该不会被截断,对吗 假设varchar列中有足够的字符(这将是39

这是在SQLServer2008上

我有几个列要从
money
decimal
转换为
varchar
,例如一个名为
item\u amount
的列

  • 这些值将如何转换

    它是否与
    转换(varchar,项目金额)
    相同?运行类似于
    selectitem\u amount,convert(varchar,item\u amount)这样的查询,从
    中转换(varchar,item\u amount)将以相同的方式呈现列,这正是我所期望和想要的

  • 我应该不会被截断,对吗

    假设
    varchar
    列中有足够的字符(这将是39,因为小数点是+1字符)。没有一个数值接近38位,大多数在3-5位范围内

  • 我已在测试表上成功运行了此命令,并希望确保我没有忽略或忘记将使我烦恼的事情:
    altertable alter column item\u amount varchar(39)default“0”
    (这是在删除现有的default((0))约束之后)


关于转换的方式,是的,只要您放置的VARCHAR列具有正确的可用字符数,您就可以设置为go

关于您将金额更改为varchar,您在这里应该很好,因为它将进行转换


我必须注意的是,这样做听起来不是个好主意,因为您不再与数字交互以进行排序、筛选等…而只是一个注释。

一个我将命名为约束的旁注。。。varchar(39)约束df_tblname_colname默认值“0”。。。它可以保持物品干净,并且容易掉落,就像您在(0)上所做的那样。另一个问题是小数/货币被扩展到全尺寸,右边有0填充。我不确定你的直觉是否正确,但这些基本上是ETL过程中的导入暂存表。将数据移动到生产表时,转换脚本会将convert()转换为正确的数字类型。re“转换脚本会将convert()转换为正确的数字类型”-好的,因此保留尾随的0不是问题