できることは、MySQLでループするユーザー定義関数0000 -> 000 -> 00 -> 0
を作成し、文字列内の重複する各数値を、数値が一意になるまで一度に1つの値(たとえば)で置き換えることです。
DELIMITER $$
CREATE FUNCTION removeDuplicates (str VARCHAR(255)) RETURNS VARCHAR(255)
BEGIN
DECLARE prevVal VARCHAR(255);
DECLARE curVal VARCHAR(255);
SET curVal = str;
REPEAT
SET prevVal = curVal;
SET curVal = REPLACE(REPLACE(prevVal, '11', '1'), '00', '0');
UNTIL prevVal = curVal
END REPEAT;
RETURN curVal;
END$$
DELIMITER ;
次に、この関数をクエリのどこでも使用できます。例えば:
SELECT removeDuplicates(your_column) FROM your_table
出力例:
SELECT removeDuplicates('0101111101010000');
---> 010101010
SELECT removeDuplicates('011100000111100101010');
---> 01010101010
SELECT removeDuplicates('111010001011101110100010101');
---> 10101010101010101
SELECT removeDuplicates('111111111111111111111');
---> 1
SELECT removeDuplicates('000000000000000000000');
---> 0
SELECT removeDuplicates('11');
---> 1
SELECT removeDuplicates('00');
---> 0
SELECT removeDuplicates('1');
---> 1
SELECT removeDuplicates('0');
---> 0