Как удалить или пропустить несколько пустых новых строк в переменной?
DECLARE
text VARCHAR2(4000) := 'line 1 text text text text text text text,
line 2 text text text text text text text,
line 3 text text text text text text text.';
BEGIN
dbms_output.put_line (text);
END;
/
Желаемый результат:
line 1 text text text text text text text,
line 2 text text text text text text text,
line 3 text text text text text text text.
Пытаюсь удалить все пустые строки из переменной. Пробовал использовать regexp_replace, но не смог получить желаемого результата.
Свободный перевод вопроса How to remove or skip the multiple new line in string от участника @S_sauden
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Хотя конечно можно использовать ^\s*$ с модификатором m, но самый простой способ, заменить повторяющиеся переводы строк chr(10):
declare
text varchar2 (4000) := '
line 1 text text text text text text text,
line 2 text text text text text text text,
line 3 text text text text text text text.';
begin
dbms_output.put_line (
trim (both chr(10) from regexp_replace (
text, chr(10)||'(\s*'||chr(10)||')+', chr(10))));
end;
/
Здесь \s* только для того, чтобы удалить строки, содержащие только пробелы.
Результат:
line 1 text text text text text text text,
line 2 text text text text text text text,
line 3 text text text text text text text.
Свободный перевод ответа от участника @Sayan Malakshinov