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

Dou*_*oug 10 sql-server

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

我尝试使用该命令

ALTER TABLE TableName ALTER COLUMN ColumnName VARBINARY(MAX)
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

消息257,级别16,状态3,行1
不允许从数据类型varchar(max)到varbinary(max)的隐式转换.
使用CONVERT函数运行此查询.

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

Tar*_*ryn 16

您无法使用ALTER TABLE语句执行此转换,因为从转换varchar(max)varbinary(max)需要显式转换.因此,您应该按照以下步骤更改表格:

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