怎么不| (按位或)在 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
文档中的示例。
我读过有关按位 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 语句
中使用 OR1) 我错过了什么吗? 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
文档中的示例。