我有一条SQL:
SELECT _binary X'70' | X'80';
在mysql8中的输出为0x3F
,不是0xF0
吗?
我还看到:SELECT _binary X'F0';
在mysql8中的输出也是0x3F
,不是0xFO
吗?
我很困惑。
答案 0 :(得分:0)
我猜您正在查询错误版本的MySQL。确认您使用的是MySQL 8。
我在5.7和8版本上都测试了该查询。
在MySQL 5.7上,结果与您相同。我猜想MySQL 5.7在执行按位操作时会将binary string
视为0。即
SELECT _binary X'70' | X'80'; -- is treated as 0 | 128 = 128
下面是5.7和8版本的结果。
SELECT _binary X'70' | X'80'; -- Result: 128 on MySQL 5.7 and 240 on MySQL 8
SELECT _binary X'70' | _binary X'80'; -- Result: 0 on MySQL 5.7 and 240 on MySQL 8
这里是demo,您可以更改版本并自己尝试。
您还可以了解有关_binary简介here的更多信息。
阅读以以下开头的段落
可以使用_binary引入程序将字符字符串文字指定为二进制字符串...