Главная > SQL > Замена кратных пробелов на один


Замена кратных пробелов на один

with t as (
  select 1 id, 'a s        sfd' info from dual
   union all
  select 2 id, 'a        b; g;g ;g  f' info from dual
   union all
  select 3 id, 'a     ' info from dual
   union all
  select 4 id, '     ' info from dual
)
SELECT id, REGEXP_REPLACE(TRIM(info), '  *', ' ') AS info_new FROM t
ORDER BY id;

Пример:

        ID INFO_NEW
---------- --------------------------------------------------------------------------------
         1 a s sfd
         2 a b; g;g ;g f
         3 a
         4

Похожие записи:

  1. Clotstoge
    23 Март 2011 в 00:34 | #1

    отличный сайт, мне очень понравился, спасибо автору

  2. Марк
    17 Декабрь 2015 в 22:21 | #2

    Вместо * (встречается 0 и более раз) должен быть + (встречается 1 и более раз). С * пробелы расставит между всеми символами.

  3. 21 Декабрь 2015 в 12:56 | #3

    @Марк
    пробелы расставит между всеми символами — а подтверждение есть? Я вот вижу в тесте выше, что все хорошо.

  4. Денис
    3 Февраль 2017 в 15:02 | #4

    @rudev
    у вас какие то особенные пробелы :D проверил — вроде как у вас. заменил пробел на \s — все как должно быть, расставило пробелы везде, поставил свой пробел — тоже. Копайте в сторону кодировки

  5. Сергей
    12 Июнь 2023 в 17:36 | #5

    отличный пример!!!!
    Респект автору!!!

  6. Аноним
    14 Март 2024 в 15:28 | #6

    @rudev
    есть, у меня тоже самое

  1. 15 Январь 2011 в 09:38 | #1