Конкатенация строк + замена - PullRequest
2 голосов
/ 12 апреля 2019

Мне нужно удалить акценты, пробелы и специальные символы в Oracle SQL.(Я думал об использовании pipe и replace )

Мой код пока:

SELECT NR_CONHEC || ' - ' || RAZAO_SOCIAL_TRANSP FROM geq_gl_ctms_frete

Например:

7590 - J. T. TRANSPORTES LTDA. - ME

Необходимый вывод:

7590-JTTRANSPORTESLTDA-ME

Ответы [ 4 ]

2 голосов
/ 12 апреля 2019

Вы можете попробовать

 select regexp_replace('7590 - J. T. TRANSPORTES LTDA. - ME','[[:space:]]|\.')
        as "Result String"
   from dual;

 Result String
-------------------------
7590-JTTRANSPORTESLTDA-ME

Для вашего случая замените следующим запросом:

SELECT regexp_replace( NR_CONHEC || ' - ' || RAZAO_SOCIAL_TRANSP,'[[:space:]]|\.') 
  FROM geq_gl_ctms_frete;

и если вы хотите удалить больше специальных символов.и акценты, отличные от точки, добавьте все, что вы хотите после |\., например |\%|\&|\è..., затем эти символы %, & или è будут удалены из строки.

0 голосов
/ 13 апреля 2019

попробуй:

select regexp_replace (NR_CONHEC|| ' - ' || RAZAO_SOCIAL_TRANSP, '[^-0-9a-zA-Z]') as rez  from geq_gl_ctms_frete ;
0 голосов
/ 13 апреля 2019

это будет работать:

SELECT  NR_CONHEC||'-'|| reexp_replace(regexp_replace(RAZAO_SOCIAL_TRANSP 
RAZAO_SOCIAL_TRANSP,'.',''),' ','') FROM geq_gl_ctms_frete;
0 голосов
/ 12 апреля 2019

Как насчет этого?

SQL> with test (col) as
  2    (select '7590 - J. T. TRANSPORTES LTDA. - ME' from dual)
  3  select regexp_replace(col, '[^([:alpha:][:digit:]-)]') result
  4  from test;

RESULT
-------------------------
7590-JTTRANSPORTESLTDA-ME

SQL>

т.е. замените все, что не является буквой, числом или дефисом, на ничто .

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