怎么不| (按位或)在 SQL Server/SSIS 2012 年工作?

How does not | (Bitwise OR) work in SQL Server/SSIS 2012?

我读过有关按位 OR 的内容,它的功能似乎与 OR 相同,只是速度更快。

我读了https://msdn.microsoft.com/en-us/library/ms186714(v=sql.110).aspx

这是他们给出的例子:

USE tempdb;
GO

SELECT a_int_value | b_int_value
FROM tableName

这对 运行 有何影响?这没有意义,您不能在 select 语句

中使用 OR

1) 我错过了什么吗? 2) 如果我的比较表达式是整数类型,我应该总是使用按位或,这样说是否安全? (这是因为按位或运算速度更快并且只适用于整数比较?)

我对 SQL 的那种风格没有太多经验,但按位 OR 与 WHERE 语句中的 OR 子句不同。

按位或将整数的每一位或在一起产生一个新的整数 例如,数字 2 和 9 可以用二进制表示为 0010 和 1001。 所以因此

0010 | 1001 = 1011

换句话说

2 | 9 = 11

的|您语句中的运算符正在对结果执行此操作。

请注意,此操作不等同于加法,即

5(0101) | 3(0011) = 7(0111)

OR 是中缀逻辑运算符。它采用两个布尔表达式作为参数和 returns TRUE、FALSE 或 UNKNOWN。 Boolean 是 SQL Server 中的一种特殊类型;它只能间接获得。例如,您不能使用布尔数据类型创建列或变量。它仅用于 SQL 服务器内部的逻辑处理,最常见于 WHERE 子句中。

| 是中缀位运算符。它采用两个整数、BIT、BINARY 或 VARBINARY 表达式(只允许一个 BINARY 或 VARBINARY)作为参数 returns 一个整数结果(或 NULL)。按位运算适用于数据表达式。

查看 bitwise OR and OR 文档中的示例。