将列从VARCHAR(MAX)更改为VARBINARY(MAX)

时间:2013-01-26 17:19:32

标签: sql-server

我有一个包含VARCHAR(MAX)列的表格,我需要将其更改为VARBINARY(MAX)

我尝试使用命令

ALTER TABLE TableName ALTER COLUMN ColumnName VARBINARY(MAX)

但是我收到了错误

  

Msg 257,Level 16,State 3,Line 1
  不允许从数据类型varchar(max)到varbinary(max)的隐式转换   使用CONVERT函数运行此查询。

该表没有数据,所以我无法理解它为什么抱怨数据转换。

1 个答案:

答案 0 :(得分:15)

converting from varchar(max) to varbinary(max) requires an explicit conversion以来,您无法使用ALTER TABLE语句执行此转换。因此,您应该按照以下步骤更改表格:

  1. 使用VARBINARY(MAX)
  2. 的新列更改表格
  3. 如果VARCHAR(MAX)列中有现有数据,请使用update语句将数据添加到VARBINARY
  4. 更改表格以删除VARCHAR(MAX)
  5. varbinary列重命名为varchar名称(来自@Ben Thul的每条评论)