如何在mysql中使用位操作?

时间:2018-03-06 01:11:18

标签: mysql bitwise-operators

我正在尝试获得xor结果:

SELECT '12e627593dbc2307' ^ '12d2552c66ddc94b';

或者当我在hash列中包含十六进制的表时:

SELECT hash ^ '12d2552c66ddc94b';

但MySQL说 - 0。

如何获得正确的结果?如果我在VARCHAR(字符串)中有十六进制怎么办?

2 个答案:

答案 0 :(得分:0)

如果这些字符串应该是十六进制数字,则需要以 X 为前缀:

SELECT X'12e627593dbc2307' ^ X'12d2552c66ddc94b';

在 MySQL 工作台中运行时,会给出:

'14762547158837836'

结果以十进制显示。这对应于 X'3472755B61EA4C',我相信这是您正在寻找的答案。

答案 1 :(得分:-1)

解决方案:

SELECT CONV('12e627593dbc2307', 16, 10) ^ 0x12d2552c66ddc94b

OR

SELECT CONV(hash, 16, 10) ^ 0x12d2552c66ddc94b