首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在varbinary中设置位

在varbinary中设置位
EN

Stack Overflow用户
提问于 2018-11-18 05:44:32
回答 1查看 285关注 0票数 1

我有一个varbinary列和一个可以大于32的位数。如何设置/测试一个在varbinary列中有数字的位?

我试着去做

代码语言:javascript
复制
convert(varbinary(max), power(2, @bit_number))

来获取varbinary,但它仅限于浮点数大小。

有一个扩展的存储过程可以在我们的数据库中对两个varbinaries进行OR运算,但是我需要传递这个很长的varbinary掩码,或者可能有一种方法可以更新varbinary中的一些字节,知道它的编号?

EN

回答 1

Stack Overflow用户

发布于 2018-11-18 11:38:20

您始终可以将varbinary转换为字符串,对其进行操作,然后再将其转换回来。例如,尝试如下所示:

代码语言:javascript
复制
DECLARE @Foo varbinary(max)
SELECT @Foo = 0x0123456789abcdef0123456789abcdef

DECLARE @Temp varchar(max)
SELECT @Temp = CONVERT(varchar(max), @Foo, 1)
DECLARE @ByteOffset integer;
SELECT @ByteOffset = 3 --offset into varbinary to access
DECLARE @GetValue binary(1)
SELECT @GetValue = CONVERT(binary(1), '0x' + SUBSTRING(@Temp, (@ByteOffset * 2) + 3, 2),1 )
PRINT @GetValue -- fetch the value at @ByteOffset

DECLARE @SetValue binary(1)
SELECT @SetValue = 0x04 --value to modify
DECLARE @Foo2 varbinary(max)
SELECT @Foo2 = CONVERT(varbinary(max), SUBSTRING(@Temp, 1, (@ByteOffset * 2) + 2) + SUBSTRING(CONVERT(varchar, @SetValue, 1), 3, 2) + SUBSTRING(@Temp, (@ByteOffset * 2) + 5, LEN(@Temp)), 1)
PRINT @Foo2 --contains the new varbinary with @ByteOffset updated with @SetValue
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53355837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档