Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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_Database_Ms Access - Fatal编程技术网

Sql 正确<;MS Access中的错误?

Sql 正确<;MS Access中的错误?,sql,database,ms-access,Sql,Database,Ms Access,我想对groupby的聚合函数中的布尔列执行或,从逻辑上讲,我为此选择了Max函数。但我在MS Access中发现TRUEFALSE的讨论变得毫无意义。毕竟,TRUE+1=FALSE有什么意义吗?不,不是这样,为什么任何人都应该关心TRUE>FALSE?他们不应该,这就是答案。@ Nealb SQL:2011基金会第8.2节比较谓词状态:“在布尔值的比较中,真大于假”,我不认为这是一个解释,因为例如在 C 代码>!0==1,而不是11111111。因此,访问中的不是,可以实现为,不按位不。我认为

我想对
groupby
的聚合函数中的布尔列执行
,从逻辑上讲,我为此选择了
Max
函数。但我在MS Access中发现
TRUE
!MS Access似乎将
TRUE
化名为
-1
,而不是
1

我在MySQL中也尝试了同样的方法,似乎效果很好:

mysql> select if(TRUE > FALSE, 1, 0);
+------------------------+
| if(TRUE > FALSE, 1, 0) |
+------------------------+
|                      1 |
+------------------------+
为什么呢?究竟为什么Access在这里打破了SQL规范?

来自:

False的二进制表示形式为0000000000000000。如果对它执行NOT操作(机器代码中),它将更改为1111111,但这是16位有符号整数-1的二进制表示形式

改变一个数字的符号是通过反转所有的位并加1来实现的。这被称为“二者的补充”

让我们改变1111111111的符号。第一倒置;我们得到:0000000000000000

然后加一个:000000000000000 1,这是1

这是1111是-1的二进制表示的证明


是在MSAccess中,true的值为-1


这可能与它的Visual Basic根有关(在VB-1中,确实可以帮助它的位运算符实现逻辑运算符的双重功能),但我不会感到惊讶,MSAccess打破了许多SQL规范。

我认为没有任何SQL规范可以将布尔值映射为整数值。你说的是Microsoft Access,你为什么期望任何符合标准的行为;)在我看来,真/假只应被视为真值,因此不具有量级。这使得关于
TRUE>FALSE
的讨论变得毫无意义。毕竟,
TRUE+1=FALSE
有什么意义吗?不,不是这样,为什么任何人都应该关心
TRUE>FALSE
?他们不应该,这就是答案。@ Nealb SQL:2011基金会第8.2节比较谓词状态:“在布尔值的比较中,真大于假”,我不认为这是一个解释,因为例如在<代码> C <代码>代码>!0==1
,而不是
11111111
。因此,访问中的
不是
,可以实现为
,不按位
。我认为这只是一个失败的设计。不管怎样,他们为什么不使用
无符号的
类型呢?那么TRUE可以是
11111111
,同时
>FALSE
“无论如何,他们为什么不使用无符号类型呢?”?因为它是在VB运行时上构建的,并且VB运行时没有未签名的类型。“但是当VB运行时没有……”我不知道伙计,这是一个错误的决定,不止一次地咬了我的屁股,我可以告诉你:(谢谢你@BinaryWorrier