我有两个包含一和零的字符串。我想确定在同一位置有多少个字符不同。例如:
“ 0000111000000000000000000000000000000000000000000000000000000000000000000000”和“ 0000000000000010000110000111100000000000000000000000000000000000000000”
其结果是:10
这些字符串的长度总是64。
我可以使用循环遍历字符串并计算差值的循环来实现。但我想用reg exp或其他工具来做。速度对我很重要。因为我有很多数据要比较。
将字符串转换为bit(64)
,使用bitwise XOR
,将结果转换为text
并计算1
字符数:
select length(replace( ( '0000111000000000000000000000000000000000000000000000000000000000'::bit(64) # '0000000000000010000110000111100000000000000000000000000000000000'::bit(64))::text, '0', '')) length -------- 10 (1 row)