Замена нескольких специальных символов с использованием функций Oracle SQL - PullRequest
0 голосов
/ 29 января 2020

@ All - Спасибо за вашу помощь

ID E-mail

1 карта. sanu@gmail.com., example@gmail.com@

2 карты? sanu@gmail.com

В приведенном выше примере, если вы видите первую строку, адрес электронной почты недействителен из-за точки в конце первого адреса электронной почты и @ в конце второго адреса электронной почты. Во 2-м ряду есть? между адресами электронной почты.

Просто хотел знать, есть ли способ обрабатывать эти символы и удалять их с адреса электронной почты с помощью функции SQL и обновлять их в таблице.

Заранее спасибо .

Ответы [ 3 ]

2 голосов
/ 29 января 2020

Вы также можете проверить translate функцию

translate('my ,string@with .special chars','@,?. ', ' ')
1 голос
/ 29 января 2020

Примерно так "удалит" все, кроме цифр, букв и пробелов (если это то, что вы хотели).

SQL> with test (col) as
  2    (select 'This) is a se#nten$ce with. everything "but/ only 123 numbers, and ABC lett%ers' from dual)
  3  select regexp_replace(col, '[^a-zA-Z0-9 ]') result
  4  from test;

RESULT
-----------------------------------------------------------------------
This is a sentence with everything but only 123 numbers and ABC letters

SQL>
1 голос
/ 29 января 2020

Вы можете вкладывать несколько вызовов replace(), но это быстро становится запутанным.

С другой стороны, regexp_replace() пригодится для этого:

regexp_replace(column_name, '@|,|\?|\.', ' ')

Символ трубы (|) означает или . Точка (.) и знак вопроса (?) являются значимыми символами в регулярных выражениях, поэтому их необходимо экранировать с помощью обратного знака sh (\).

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