Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在MS-ACCESS中执行位运算算法_Sql_Ms Access_Where Clause_Bitwise Operators - Fatal编程技术网

Sql 如何在MS-ACCESS中执行位运算算法

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) 编辑:(其

在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)
编辑:(其中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立即起作用