使用替换并与VARBINARY
转换,我需要一个查询,将在VARBINARY找到一个字符串的一部分,并删除在字符串使用替换并与VARBINARY
例如我的表dbo.inventory_table已列CharacterIdx和数据的请求的一部分。 数据是目标列包含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
Implicit conversion from data type varchar to varbinary is not allowed.
Use the CONVERT function to run this query.
我需要的字符串,虽然仍然VARBINARY。
我相信您需要将其转换回varbinary,因为replace
会从隐式转换中返回varchar
值。试试这个:
UPDATE [dbo].[Inventory_table]
SET Data = CAST(REPLACE(Data, 0x3C090000000000002C0100000200000000F83D09000000000000580200000400000000F83E09000000000000E80300000600000000F8, 0x) AS varbinary)
WHERE CharacterIdx = 101756
我的服务器上此的值变化:
0x210500000000000043000000000000000000
是的即时即时尝试获得,但该查询并没有删除其余的,但它运行成功 – 2014-10-06 23:06:27
@NathanAguliar你在我最后一次编辑后尝试吗? – jpw 2014-10-06 23:07:59
哦与0x修订?现在不让我试试 – 2014-10-06 23:09:00
作为REPLACE'的'第二个参数,使用'0x',而不是'“”'。你也不应该把第一个参数放在引号之间;代替这个,用“0x”作为前缀。 http://stackoverflow.com/questions/24494778/how-to-perform-a-replace-on-varbinary-data-in-sql – 2014-10-06 22:32:44
那些'000000'也可能会导致你的问题。因为这是一个NULL字符。你可能需要'COLLATE Latin1_General_100_BIN2' – 2014-10-06 22:50:11