MSSQL如何替换varbinary类型列中间指定位置的随机数据
Varbinary指定位置批量替换方案
可以通过指定偏移位置的方式实现批量修改,核心使用SQL原生的STUFF函数即可完成,该函数支持直接对varbinary类型做指定位置的内容替换。
操作逻辑说明
- 根据你给出的起始位置67、结束位置131,先计算需要替换的长度:
替换长度 = 结束位置 - 起始位置 + 1,计算结果为65字节 - 你需要填充的全
FF目标内容,对应65字节的varbinary值可以直接写为固定值 STUFF函数参数逻辑:STUFF(原字段, 起始位置, 替换长度, 要替换成的内容)
示例代码
-- 先执行查询验证,确认替换结果符合预期后再做更新 SELECT inventory AS 原内容, STUFF(inventory, 67, 65, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) AS 替换后内容 FROM 你的表名; -- 验证无误后执行更新操作 UPDATE 你的表名 SET inventory = STUFF(inventory, 67, 65, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) -- 可补充WHERE条件过滤需要更新的行,避免误操作 WHERE 过滤条件;
注意事项
- 这里的位置计数是从1开始的字节偏移量,和你给出的67、131的计数规则匹配,如果你的位置是从0开始计数的,把起始位置参数改为68即可
- 正式执行更新前一定要先跑SELECT查询验证替换结果,避免因为位置计数偏差导致数据错误
- 如果不同行需要替换的长度不一致,也可以把长度参数换成动态计算的字段值,适配不同行的差异需求
内容的提问来源于stack exchange,提问作者Noob404
相关产品推荐
相关产品推荐

