我正在研究SQL数据库,我有一个名为“Price”的列。创建数据库时,“价格”列设置为NVARCHAR
我需要将其类型更改为decimal(18, 2)
而不会丢失数据库中的数据。这应该通过SQL脚本来完成在不丢失数据的情况下更改列类型
我想创建一个新列,将数据移动到它,删除旧列,然后重命名新创建的列。
有人可以帮我一个例子如何做到这一点? 也有在SQL中解析字符串到小数的函数吗?
感谢
我正在研究SQL数据库,我有一个名为“Price”的列。创建数据库时,“价格”列设置为NVARCHAR
我需要将其类型更改为decimal(18, 2)
而不会丢失数据库中的数据。这应该通过SQL脚本来完成在不丢失数据的情况下更改列类型
我想创建一个新列,将数据移动到它,删除旧列,然后重命名新创建的列。
有人可以帮我一个例子如何做到这一点? 也有在SQL中解析字符串到小数的函数吗?
感谢
你并不需要添加一个新列两次,只是删除旧的更新新一后:
ALTER TABLE table_name ADD new_column_name decimal(18,2)
update table_name
set new_column_name = convert(decimal(18,2), old_column_name)
ALTER TABLE table_name DROP COLUMN old_column_name
注意,如果old_column_name
不是数字,则convert
可能会失败。
缺失步骤,您将new_column_name重命名为old_column_name,仍为+1 –
您可以使用Management Studio以可视方式进行这些更改。然后,使用“生成更改脚本”按钮来获取您所做更改的脚本。一定要做好所有的测试在原ddbb的副本,以防出错..
注 - 如何找到:http://stackoverflow.com/questions/6247556/generate-changes-script –
像
ALTER TABLE [MyTable的]添加列NewPrice十进制(18,2)空
然后
更新[MyTable的]设置NewPrice =转换(十进制(18,2)[参考价格])如果价格不为空
如果上述失败,那么你就需要来加强它对付牛仔
一旦开心,用Alter Table删除旧列并用sp_rename重新命名新列
您是否已经完成了一些关于如何执行此操作的研究?你有什么,你卡在哪里? – Pablo