bit\u count(hash1^hash2)将hash1^hash2的结果解释为字符串

sigwle7e  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(222)

所以:
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'

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题