我需要一个查询,它将在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
但它给了我一个错误:
Msg 257,Level 16,State 3,Line 3
不允许从数据类型varchar到varbinary的隐式转换。
使用CONVERT函数运行此查询。
我需要字符串保留varbinary。
答案 0 :(得分:1)
我相信您需要将其转换回varbinary,因为replace
会从隐式转换中返回varchar
值。试试这个:
UPDATE [dbo].[Inventory_table]
SET Data = CAST(REPLACE(Data, 0x3C090000000000002C0100000200000000F83D09000000000000580200000400000000F83E09000000000000E80300000600000000F8, 0x) AS varbinary)
WHERE CharacterIdx = 101756
在我的服务器上,这会将值更改为:
0x210500000000000043000000000000000000