首页 > 解决方案 > 无法将数据库中代码列中的某些值的 isdeleted 列设置为 0

问题描述

尝试更新具有varbinary列的表。我有一个名为 code 的列,它的值需要将该isdeleted列设置为 0,而这恰好是varbinary. 对于代码列中的许多值,我需要删除设置为 0。

我尝试了一个update语句,将isdeleted代码在某些值中的代码列设置为 0。

Update dbo.code
set isdeleted = '0' 
where code in ('1', '2',  '3')

期望这些值设置为 0 但是我得到一个错误

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

标签: sql-server

解决方案


来自 Google: VARBINARY 类型类似于 VARCHAR 类型,但存储二进制字节字符串而不是非二进制字符串。M 表示最大列长度(以字节为单位)。它不包含字符集,并且比较和排序基于字节的数值。

你可以试试 -

Update dbo.code
set isdeleted = 0 -- Remove single quotes from the Value 
where code in ('1', '2',  '3')

我对您的要求有一些额外的观察/评论。正如您所提到的,您想将“0”推送到您的 isdeleted 列,我猜您正在寻找在该列中存储 1 或 0 来定义行(可能)是否被删除。如果我猜对了,我的建议是使用 BIT 数据类型列并将 1 或 0 存储到该列。


推荐阅读