sys.fn_IsBitSetInBitmask如何工作?

时间:2013-03-21 23:03:58

标签: sql-server function bit-manipulation

如上所述,sys.fn_IsBitSetInBitmask如何在SQL Server中运行?你能举个例子吗?

1 个答案:

答案 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