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

18

我有一张表,其中有一个VARCHAR(MAX)列,我需要将它更改为VARBINARY(MAX)

我尝试使用命令

ALTER TABLE TableName ALTER COLUMN ColumnName VARBINARY(MAX)

但我收到了错误信息:

 

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

表中没有数据,所以我不明白为什么它会抱怨数据转换。


如果您已经有了表中的数据,那么您不能像那样更改数据类型。因为现有的数据不允许您这样做。 - Kiran1016
就像我说的,这个表格没有数据。 - Doug
sorry,missed the last line - Kiran1016
4
如果你没有数据,你可以删除该列并按其新类型创建它。 - flup
https://dev59.com/S23Xa4cB1Zd3GeqPbicV#14305756 - bummi
3个回答

25
您无法使用ALTER TABLE语句执行此转换,因为varchar(max)varbinary(max)需要显式转换。 因此,您应按照以下步骤更改表格:
  1. 使用新的VARBINARY(MAX)列更改表格
  2. 如果在VARCHAR(MAX)列中存在现有数据,请使用更新语句将数据添加到VARBINARY列中
  3. 更改表以删除VARCHAR(MAX)
  4. 重命名varbinary列为varchar名称(根据@Ben Thul的评论)

1
  1. 将 varbinary 列重命名为 varchar 列的名称。
- Ben Thul

3

Varchar转换为Int,然后将Int转换为Binary


在一个空表格中,这太棒了。 - Tim Lehner

0
这对我有效:

ALTER TABLE studentlogins MODIFY password VARBINARY(255);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接