如上所述,sys.fn_IsBitSetInBitmask如何在SQL Server中运行?你能举个例子吗?
答案 0 :(得分:3)
它表示翻转的二进制数字中的点,因为二进制数字111是'7'(第1,第2和第3位打开)。然后让我们使用十六进制数0x7作为此函数中的第一个参数,并检查1位
(我将在这里使用convert()到varbinary,只是为了表明这是二进制数的表示,你不需要convert()函数)
select sys.fn_IsBitSetInBitmask(convert(VARBINARY, 0x7),1)
这会返回一些<> 0(到目前为止,我只看到返回值为2 ^(7 + n),其中sys.fn_IsBitSetInBitmask函数的第二个参数为n)。另一个例子是如果我们给出十六进制数0xa,它等于1010二进制,那么第四位和第二位被打开(有一个)。所以函数调用
if (sys.fn_IsBitSetInBitmask(convert(VARBINARY, 0xa),2)<> 0)
if (sys.fn_IsBitSetInBitmask(convert(VARBINARY, 0xa),4) <> 0)
select 'sup son'
将返回'sup son'。只需从
中选择值即可 select sys.fn_IsBitSetInBitmask(convert(VARBINARY, 0xa),4)
将返回值2 ^(7 + n),其中n为4,因此2 ^ 11为2048