我有一個包含各種資料和多行的庫存列,有必要替換列中間的隨機varbinary資料。
庫存欄示例:
截屏
例如這個:
0x0500420000000000005000FFFFFFFFFF56730E64FFFFFFFFFFFFFFFFFFFFFFFF0400180000000000006000FFFFFFFFFF56730E72FFFFFFFFFFFFFFFFFFFFFFFF04001E0000000000007000FFFFFFFFFF56730E5EFFFFFFFFFFFFFFFFFFFFFFFF
需要改為:
0x0500420000000000005000FFFFFFFFFF56730E64FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04001E0000000000007000FFFFFFFFFF56730E5EFFFFFFFFFFFFFFFFFFFFFFFF
我知道如何像這里一樣更改靜態資料。但是這里有很多行,每一行的資料都不一樣。有可能按長度以某種方式更改資料嗎?起始長度位置為 67,結束 131。
uj5u.com熱心網友回復:
但是這里有很多行,每一行的資料都不一樣。有可能按長度以某種方式更改資料嗎?起始長度位置為 67,結束 131。
您可以使用STUFF或SUBSTRING和 來重寫整個blob,或者您可以就地更新它,請參閱更新Blob,例如
drop table if exists #temp
go
create table #temp(id int, blob varbinary(max))
insert into #temp(id,blob) values (1,0x0500420000000000005000FFFFFFFFFF56730E64FFFFFFFFFFFFFFFFFFFFFFFF0400180000000000006000FFFFFFFFFF56730E72FFFFFFFFFFFFFFFFFFFFFFFF04001E0000000000007000FFFFFFFFFF56730E5EFFFFFFFFFFFFFFFFFFFFFFFF)
declare @newBytes varbinary(100) = 0xAAAAAAAAAAAA
--only for varbinary(max) but updates in-place
update #temp
set blob.write(@newBytes,10,datalength(@newBytes))
--for varbinary(max) or varbinary(n) replace the whole value
update #temp
set blob = cast(STUFF(blob,30,datalength(@newBytes),@newBytes) as varbinary(max))
select * from #temp
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349944.html
標籤:sql sql-server
下一篇:使用索引時如何保證一致性?
