Как убрать пробелы между словами и заменить их одним подчеркиванием, используя только функцию «REPLACE», «INSTR» ИЛИ «SUBSTR» oracle - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу заменить пробелы между словами одним подчеркиванием, используя функции 'REPLACE', 'INSTR' ИЛИ ​​'SUBSTR' oracle.

example:

    "my name is            xyz" =>  "my_name_is_xyz"
    "test    sdf"               =>  "test_sdf"

возможно ли получить выше вывод с помощью «REPLACE», «INSTR» ИЛИ «SUBSTR».

Примечание: я не хочу использовать replace_regex

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Вложенные замены могут помочь.

SQL> with test (col) as
  2    (select 'my name is            xyz' from dual union all
  3     select 'test    sdf'               from dual
  4    )
  5  select col,
  6    replace(replace(replace(replace(col, ' ', '# '), ' #'), '#'), ' ', '_') result
  7  from test;

COL                       RESULT
------------------------- --------------------------------------------------
my name is            xyz my_name_is_xyz
test    sdf               test_sdf

SQL>
0 голосов
/ 23 апреля 2020

Опция best здесь, вероятно, заключается в использовании REGEXP_REPLACE, поэтому я предлагаю:

SELECT
    col,
    REGEXP_REPLACE(col, '\s+', '_') AS col_underscore
FROM yourTable;

Регулярные выражения здесь хорошо подходят, потому что у вас есть неизвестное количество пробелов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...