Sql 如何在MS-ACCESS中执行位运算算法
在MSACCESS内部,我希望在查询的Sql 如何在MS-ACCESS中执行位运算算法,sql,ms-access,where-clause,bitwise-operators,Sql,Ms Access,Where Clause,Bitwise Operators,在MSACCESS内部,我希望在查询的WHERE子句中使用相对简单的按位操作,例如: SELECT * FROM Table1 WHERE Column1 (some operator) 8 = 0 这将: 返回Column1未设置其第4位的行,例如0、1、2、…、7(均清除其第4位)和16(为000100000b) 排除Column1为8、9、10、…、15等的行 PS:位运算符与布尔运算不同吗?您可以: WHERE (((column\(2^b)) mod 2) = 1) 编辑:(其
WHERE
子句中使用相对简单的按位操作,例如:
SELECT *
FROM Table1
WHERE Column1 (some operator) 8 = 0
这将:
- 返回
未设置其第4位的行,例如0、1、2、…、7(均清除其第4位)和16(为000100000b)Column1
- 排除
为8、9、10、…、15等的行Column1
WHERE (((column\(2^b)) mod 2) = 1)
编辑:(其中b是要测试的特定位)
或在Access中不可用,除非您设置了ANSI模式。在VBA中,您可以将布尔运算符应用于数字,以便执行位运算
(13 AND 8) = 0
但是,在SQL中,这不起作用。但是,您可以编写在查询中调用的VBA函数。如果您可以在中运行查询(例如,通过更改Access UI查询模式或使用ADO classic或ADO.NET连接到该模式),请使用
带
操作符
以下代码示例将其打印到即时窗口:
8 AND 7: -1
8 BAND 7: 0
第一种情况(AND)将两个数字都视为真值,因此True和给出-1(True)。我认为乐队的方式是你想要的
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
谢谢,我查一下。使用ADO.NET时是否也适用于此?我想是的。但我不做ADO.NET,所以我的猜测毫无价值。:-)当我通过ADO.Net.WHERE(int([column_name]/(2^[zero bit test])mod 2=1)查询MS Access数据库时,其他按位运算符如BOR
和BXOR
.Yup立即起作用