日期:2014-05-17  浏览次数:20658 次

sql文中 对二进制字段进行位运算
数据库中执行二进制字段的或运算

CONVERT(BINARY(16),TD_TM_PRO_STS,2) | 3458764513820540928

(3458764513820540928 是0x00000300000000000000000000000000的十进制数)

只是想把TD_TM_PRO_STS字段的第三个字节更新成03其他不变,sql文中“|”运算的右操作数
只能为 ‘int’、‘smallint’ 或 ‘tinyint’型,3458764513820540928超出范围。

左右操作数都是 BINARY是非法的。

有没有什么好的办法。
 
 

------解决方案--------------------
select sys.fn_MSorbitmaps(0xAABB00CC, 0x000003) --0xAABB03CC

------解决方案--------------------
我用sql promot搞出来代码了。

create function sys.fn_MSorbitmaps (@bm1 varbinary(128), @bm2 varbinary(128))
returns varbinary(128)
as
begin

declare @bm3 varbinary(128)
exec sys.xp_ORbitmap @bm1,@bm2,@bm3 output
return @bm3

end
GO