I have two string that contain one and zeros. I want to determine how many chars are different the same position. For example:
“0000111000000000000000000000000000000000000000000000000000000000” AND “0000000000000010000110000111100000000000000000000000000000000000”
The result is: 10
These strings’ length are 64 always;
I can do it with loop which iterate over the string and count difference. but i want to do it with reg exp or another tool. The speed is important me. Because i have a lot of data to compare.
Advertisement
Answer
Cast the strings to bit(64)
, use bitwise XOR
, cast the result to text
and count the 1
chars:
select length(replace( ( '0000111000000000000000000000000000000000000000000000000000000000'::bit(64) # '0000000000000010000110000111100000000000000000000000000000000000'::bit(64))::text, '0', '')) length -------- 10 (1 row)