所以:
b'1010'^b'0000'=1010
如果我这样做了: BIT_COUNT(b'1010' ^ b'0000')
我得到了正确的结果(2)
但是如果我从表中选择相同的值(二进制字段) BIT_COUNT(hash1 ^ hash2)
我得到了错误的结果
即使我将表中的字段设置为十六进制,并尝试将它们转换为二进制,然后对位进行计数,我仍然会得到相同的错误结果:
BIT_COUNT(CONV(hex_hash1, 16, 2) ^ CONV(hex_hash2, 16, 2))
另一个奇怪行为的例子,如果我做以下查询:
SELECT
BIT_COUNT(CONV('b', 16, 2) ^ CONV('d', 16, 2))
结果我得了9分,本来应该是2分。从我所看到的结果是作为字符串处理的,我尝试了cast()、conv()等等,但没有一个有效。
有人知道为什么吗?
(这是我的环境)
'innodb_version', '5.7.23'
'protocol_version', '10'
'slave_type_conversions', ''
'tls_version', 'TLSv1,TLSv1.1,TLSv1.2'
'version', '5.7.23-log'
'version_comment', 'Source distribution'
'version_compile_machine', 'x86_64'
'version_compile_os', 'Linux'
暂无答案!
目前还没有任何答案,快来回答吧!