MySQL十六进制文字二进制

时间:2019-06-28 03:50:54

标签: mysql

我有一条SQL: SELECT _binary X'70' | X'80';在mysql8中的输出为0x3F,不是0xF0吗?

我还看到:SELECT _binary X'F0';在mysql8中的输出也是0x3F,不是0xFO吗?

我很困惑。

1 个答案:

答案 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引入程序将字符字符串文字指定为二进制字符串...