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

问题描述 投票:0回答:4

我有一个表,其中有一个

VARCHAR(MAX)
列,我需要将其更改为
VARBINARY(MAX)

我尝试使用命令

ALTER TABLE TableName ALTER COLUMN ColumnName VARBINARY(MAX)

但是我收到了错误

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

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

sql-server
4个回答
26
投票

您无法使用

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

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

4
投票

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


0
投票

只需删除此列并使用新类型 varbinary 再次添加


-1
投票

这对我有用:

ALTER TABLE studentlogins MODIFY password VARBINARY(255);

© www.soinside.com 2019 - 2024. All rights reserved.