TSQL:在sql server中更改数字列时如何转换值?
这是在SQLServer2008上 我有几个列要从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
money
和decimal
转换为varchar
,例如一个名为item\u amount
的列
- 这些值将如何转换
它是否与
相同?运行类似于转换(varchar,项目金额)
中转换(varchar,item\u amount)将以相同的方式呈现列,这正是我所期望和想要的selectitem\u amount,convert(varchar,item\u amount)这样的查询,从
- 我应该不会被截断,对吗
假设
列中有足够的字符(这将是39,因为小数点是+1字符)。没有一个数值接近38位,大多数在3-5位范围内varchar
- 我已在测试表上成功运行了此命令,并希望确保我没有忽略或忘记将使我烦恼的事情:
(这是在删除现有的default((0))约束之后)altertable alter column item\u amount varchar(39)default“0”
我必须注意的是,这样做听起来不是个好主意,因为您不再与数字交互以进行排序、筛选等…而只是一个注释。一个我将命名为约束的旁注。。。varchar(39)约束df_tblname_colname默认值“0”。。。它可以保持物品干净,并且容易掉落,就像您在(0)上所做的那样。另一个问题是小数/货币被扩展到全尺寸,右边有0填充。我不确定你的直觉是否正确,但这些基本上是ETL过程中的导入暂存表。将数据移动到生产表时,转换脚本会将convert()转换为正确的数字类型。re“转换脚本会将convert()转换为正确的数字类型”-好的,因此保留尾随的0不是问题