Итак:
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'