【问题标题】:Change column from VARCHAR(MAX) to VARBINARY(MAX)将列从 VARCHAR(MAX) 更改为 VARBINARY(MAX)
【发布时间】:2013-01-10 10:59:37
【问题描述】:

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

我尝试使用命令

ALTER TABLE TableName ALTER COLUMN ColumnName VARBINARY(MAX)

但我得到了错误

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

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

【问题讨论】:

  • 如果表中有数据,那么您不能像那样更改数据类型。因为现有数据不允许您这样做。
  • 如我所说,该表没有数据。
  • 对不起,错过了最后一行
  • 如果您没有数据,您可以删除该列并使用其新类型创建它。

标签: sql-server


【解决方案1】:

由于converting from varchar(max) to varbinary(max) requires an explicit conversion,您无法使用ALTER TABLE 语句执行此转换。所以你应该按照这些步骤来改变你的表:

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

【讨论】:

  • 4.将 varbinary 列重命名为 varchar 列的名称。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 2010-10-13
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多