我有两个包含 1 和 0 的字符串。我想确定有多少字符在同一位置不同。 例如:
“000011100000000000000000000000000000000000000000000000000000000” 和 “0000000000000001000011000011110000000000000000000000000000000000”
结果是: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)
关于sql - Postgres 上的差异字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58357830/