SQL什么是&;

SQL什么是&;,sql,bit-manipulation,bitwise-operators,bitwise-and,Sql,Bit Manipulation,Bitwise Operators,Bitwise And,我想知道操作员和的功能。例如: SELECT (8 & 16) 在最后一个代码中,如果我将第二个值(16)更改为另一个值,如10,则结果会更改 我读过,但没有找到准确的答案 感谢您的帮助。在MS SQL Server中,它是一个AND运算符 如果任何位置的位均为1,则结果为1 1010 1010=170 0100 1011=75 0000 1010=10 选择170和75 返回10在大多数数据库中,&是按位AND运算符。它所做的是将其整数参数转换为它们的位表示形式,并将和运算符应用于每

我想知道操作员
的功能。例如:

SELECT (8 & 16)
在最后一个代码中,如果我将第二个值(
16
)更改为另一个值,如
10
,则结果会更改

我读过,但没有找到准确的答案

感谢您的帮助。

在MS SQL Server中,它是一个AND运算符

如果任何位置的位均为1,则结果为1

1010 1010=170

0100 1011=75

0000 1010=10

选择170和75


返回10在大多数数据库中,
&
是按位AND运算符。它所做的是将其整数参数转换为它们的位表示形式,并将
运算符应用于每个位(这相当于将每个位以整数形式相乘):

对于您的操作
8和16

  • 8
    以二进制形式表示为
    1000
  • 16
    对应于
    10000
执行按位and运算:

    01000 
AND 10000
    -----   
    00000 (0)

对于SQL Server,您可以在此处找到答案

&bitwise运算符在两个表达式之间执行按位逻辑AND运算,将两个表达式的每个对应位都取下来。当且仅当输入表达式中的两个位(用于正在解析的当前位)的值均为1时,结果中的位设置为1;否则,结果中的位设置为0

如果左表达式和右表达式具有不同的整数数据类型(例如,左表达式为smallint,右表达式为int),则较小数据类型的参数将转换为较大数据类型。在本例中,smallintexpression被转换为int

回到您的示例:

如果按位比较2个整数,将计算:


8  = 0 0 0 0 1 0 0 0
16 = 0 0 0 1 0 0 0 0
0 0 0 0=0



8  = 0 0 0 0 1 0 0 0
10 = 0 0 0 0 1 0 1 0
0 0 0 1 0 0=8


希望这会有所帮助。

请用您正在使用的数据库标记您的问题:mysql、oracle、sql server…?您已经完成了吗?这回答了你的问题吗?杰出的谢谢你的帮助!