mysql - BIT_COUNT(hash1^hash2) 将 hash1^hash2 的结果解释为字符串
问题描述
所以:
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'
解决方案
推荐阅读
- php - Php foreach 在时隙间隔中循环,如果 between 空闲,则仅返回四分之一时间
- flowtype - 从对象的联合类型中的属性制作流联合类型的字符串
- hive - Hive Date 函数无法正确处理日期
- python - 如何解决 Raspberry Pi 上 Tkinter 和 MQTT 的性能问题?我在发布时冻结了 6 秒
- swift - 从数据可可 swift 5 创建图像
- c++ - std::async 导致死锁?
- java - Java:当我有一组对象时,有没有一种简单的方法来获得平均值?
- python-3.x - 用python在网站中刮一张表(无表标签)
- python - 从 RFC Mex 获取年龄
- pandas - 创建动态 Excel 路径以在 Python 中读取