在SQL Server中将列类型从Varchar更改为数值

时间:2019-11-13 08:55:11

标签: sql sql-server

如何将列类型从varchar更改为已经有数据且数字为数字的数字。

SQL SERVER

1 个答案:

答案 0 :(得分:0)

类似这样的

  • 1,创建一个新的数字列
  • 2,使用varchar列中的数据更新新列
  • 3,检查并确认数字列中的数据
  • 4,删除varchar列

但是正如评论中所提到的,您需要了解触发器,FK等 更新为使用TRY_CONVERT

ALTER TABLE dbo.table ADD numeric_column(x,y); --x, y here is the precision, scale
GO

UPDATE dbo.table
SET    numeric_column = TRY_CONVERT(NUMERIC(x,y),varchar_numbers_column)
GO

ALTER TABLE DROP COLUMN varchar_numbers_column
GO

使用Try_Convert,当转换失败时返回NULL

SELECT
     Failed_Date        = TRY_CONVERT(NUMERIC(12,2), '12/31/2010')
    ,Failed_#           = TRY_CONVERT(NUMERIC(12,2), '#')
    ,WorkingWholeNumber = TRY_CONVERT(NUMERIC(12,2), '3')
    ,WorkingDecimal     = TRY_CONVERT(NUMERIC(12,2), '5.67')