【发布时间】:2014-10-06 22:19:48
【问题描述】:
我需要一个查询,它会在 varbinary 中查找字符串的一部分并删除字符串的请求部分
例如,我的表 dbo.inventory_table 包含 CharacterIdx 和 Data 列。 数据是包含 varbinary 的目标列,因此对于 characteridx 101756 数据是这样的
0x2105000000000000430000000000000000003C090000000000002C0100000200000000F83D09000000000000580200000400000000F83E09000000000000E80300000600000000F8
我想要一个查询来查找和删除
3C090000000000002C0100000200000000F83D09000000000000580200000400000000F83E09000000000000E80300000600000000F8
离开
0x210500000000000043000000000000000000
其中 CharacterIdx = 101756
我试过了
UPDATE [dbo].[Inventory_table]
SET Data = REPLACE(Data, '3C090000000000002C0100000200000000F83D09000000000000580200000400000000F83E09000000000000E80300000600000000F8', '')
WHERE CharacterIdx = 101756
但它给了我一个错误:
消息 257,第 16 级,状态 3,第 3 行
不允许从数据类型 varchar 到 varbinary 的隐式转换。
使用 CONVERT 函数运行此查询。
我需要字符串保持 varbinary。
【问题讨论】:
-
作为
REPLACE的第二个参数,使用0x代替''。您也不应该将第一个参数放在引号之间;而不是这个,在它前面加上0x。 stackoverflow.com/questions/24494778/… -
那些
000000也可能会给你带来麻烦。因为那是一个 NULL 字符。你可能需要COLLATE Latin1_General_100_BIN2
标签: sql sql-server tsql varbinary