【问题标题】:How to change column data type of table in Microsoft SQL Server Management如何在 Microsoft SQL Server 管理中更改表的列数据类型
【发布时间】:2021-01-21 15:07:57
【问题描述】:

如何将“价格”列的数据类型从 int 更改为 float

我尝试将数据类型直接从 table 更改为 float,但没有成功。 我什至删除了该列并添加了另一个具有相同名称的列,但它不起作用。 得到以下错误:

USE [GarageDB]
GO

UPDATE [dbo].[Product]
SET [TypeId] = <TypeId, int,>
,[Name] = <Name, varchar(100),>
,[Price] = <Price, int,>
,[Description] = <Description, text,>
,[Image] = <Image, varchar(150),>
WHERE <Search Conditions,,>
GO

我应该使用什么命令将 price 的数据类型从 int 更改为 float?

我想把它变成十进制数。例如:40.99

【问题讨论】:

  • 您可以在这里查看示例:stackoverflow.com/questions/20963738/…>
  • 你看文档了吗???这可能是您在此处发布问题之前应该首先访问的地方。
  • 你不应该 - 浮点本质上是不精确的。您只是在制造需要在以后解决的问题。正如 Larnu 建议的那样 - 使用具有适当精度的小数

标签: sql sql-server database ssms sqldatatypes


【解决方案1】:

在开发中,我们只是启用此功能...当然,在生产环境中您通常不希望这样做,因为它可能导致数据丢失或元数据丢失和其他错误,尤其是在系统负载不足的情况下。

步骤如下:

  • 工具菜单 > 选项。
  • 在导航窗格中,单击设计器。
  • 取消选中阻止保存需要重新创建表的更改复选框。
  • 点击确定。

如果您想要更直接的方法,或者如果您需要在生产环境中执行此操作,您也可以查看 ALTER TABLE 命令,但请确保您知道自己在做什么,因为此命令可能具有破坏性。

如果你想使用 GUI,这就是方式。

【讨论】:

    【解决方案2】:

    使用 SQL,而不是 GUI。例如:

    ALTER TABLE dbo.YourTable ALTER COLUMN YourColumn decimal(10,2) NULL; 
    

    请注意,如果您有引用该列的约束,则需要DROP 这些,然后重新创建它们。

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 2016-10-22
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多