[英]How to perform bitwise operations arithmetic in MS-ACCESS
在MSACCESS内部,我想在查询的WHERE
子句中使用相对简单的按位运算,例如:
SELECT *
FROM Table1
WHERE Column1 (some operator) 8 = 0
这个会:
Column1
第4位的行,例如0、1、2,...,7(所有第4位都清零)和16(其为00010000b) Column1
为8、9、10,...,15等的行。 PS:按位运算符与布尔运算不同吗?
你可以:
WHERE (((column\(2^b)) mod 2) = 1)
编辑:(其中b是要测试的特定位)
除非您设置ANSI模式,否则Access中不提供OR。
如果您可以在ANSI-92查询模式下运行查询(例如,通过更改Access UI查询模式或通过使用ADO classic或ADO.NET进行连接),请使用BAND
运算符。
下面的代码示例将其打印到立即窗口:
8 AND 7: -1
8 BAND 7: 0
第一种情况(AND)将两个数字都视为True值,因此True AND True
给出-1(True)。 我认为BAND方法是您所追求的。
Public Sub BitwiseAndQuery()
'the db engine treats numbers as booleans with AND '
Debug.Print "8 AND 7: "; _
CurrentDb.OpenRecordset("SELECT 8 AND 7")(0)
'ADO includes BAND for bitwise AND '
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT (8 BAND 7)", CurrentProject.Connection
Debug.Print "8 BAND 7:"; rs(0)
rs.Close
Set rs = Nothing
End Sub
在VBA中,您可以将布尔运算符应用于数字,以便执行按位运算
(13 AND 8) = 0
但是,在SQL中,这不起作用。 但是,您可以编写在查询中调用的VBA函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.