【问题标题】:Modify SQL_Variant Column to VARCHAR将 SQL_Variant 列修改为 VARCHAR
【发布时间】:2021-07-27 02:14:42
【问题描述】:

我有一张表,其中一列的数据类型为sql_variant。我正在尝试将列修改为VarChar(800),但出现错误:

不允许从数据类型 sql_variant 到 varchar 的隐式转换。使用 CONVERT 函数运行此查询

我尝试在Alter 语句中使用Convert 语句,但出现了不正确的语法错误。如果有人能阐明如何解决这个问题,我将不胜感激。谢谢!

脚本:

ALTER TABLE dbo.tmpEmployee
ALTER COLUMN bigVal Varchar(800)

bigValsql_variant 数据类型的列。

这是错误:

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

【问题讨论】:

  • 编辑您的问题并显示生成错误的代码和示例数据。
  • 感谢您的回复,戈登。我已经编辑了问题以添加我运行的代码。
  • 您是否尝试过从表格中选择并在列上使用try_convert

标签: sql sql-server tsql sql-server-2008 sql-server-2005


【解决方案1】:

试试这个查询

UPDATE dbo.tmpEmployee
          SET bigVal = CONVERT(varchar(800),bigVal) 
          FROM tmpEmployee

ALTER TABLE dbo.tmpEmployee
ALTER COLUMN bigVal Varchar(800)

【讨论】:

  • 嗨 Meysam,感谢您的回复。我已经尝试过这种方法,但我得到了同样的错误。
  • 请输入tmpEmployee表数据。否则您的问题将无法解决。
【解决方案2】:

恐怕这不是一件容易的事,如果列的顺序无关紧要,只需添加一个新列作为 varchar(800) 并尝试将数据从 sql_varient 插入该列, 但是您必须注意该列中不同类型的数据以使用正确的转换格式,例如日期和二进制值

【讨论】:

  • 谢谢你,eshirvana!我试过了,但我仍然遇到同样的错误。
  • @sqldeveloper 那么我认为这并不容易,
  • 我想我可以在复制到新列时将所有内容都转换为 varchar。但是非常感谢您的回复。我很感激!
  • @sqldeveloper 请编辑您的问题以显示您为尝试此方法所做的工作。你遇到了什么错误。
猜你喜欢
  • 2018-12-31
  • 2013-01-10
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多