Проблема в том, что вы увеличиваете i
после замены новой строки. Рассмотрим следующую простую строку:
1\n\n\n2
01 2 3 4 -- indexes
Когда i
равно 1
, вы видите, что в индексах i=1
и i+1=2
есть новые строки, поэтому вы удаляете первую строку с INSERT()
. Теперь строка:
1\n\n2
01 2 3
и вы делаете SET i = i + 1
. Теперь i
равно 2, но индексы i=2
и i+1=3
не имеют новых строк, поэтому вы не можете удалить следующую новую строку.
Измените его так, чтобы вы увеличивали i
только тогда, когда вы не нашли пару новых строк.
IF(((SUBSTR(address,i,1) in (CHAR(10) ,CHAR(13))) AND (SUBSTR(address,i+1,1) in (CHAR(10) ,CHAR(13))) ) )
THEN set address = INSERT(address,i,1,'');
ELSE set i= i+1;
END IF;