Удаление всех специальных символов с помощью REGEXP_REPLACE в oracle - PullRequest
1 голос
/ 08 января 2020

Я могу удалить все специальные символы, как показано ниже:

SELECT REGEXP_REPLACE('91D5 ZBA DISCONNECTION  https://mail.com/owa/#path=/mailÂ]*Debit Bank Ctry next Business Day is 06-Jan-2020', '[^0-9A-Za-z]', ' ')  
FROM dual;

Вывод:

91D5 ZBA DISCONNECTION  https   mail tcs com owa  path  mail   Debit Bank Ctry next Business Day is 06 Jan 2020 

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

SELECT REGEXP_REPLACE('91D5 ZBA DISCONNECTION  https://mail.com/owa/#path=/''mailÂ]'*Debit Bank Ctry next Business Day is 06-Jan-2020', '[^0-9A-Za-z]', ' ')  
FROM dual;  

Ответы [ 2 ]

1 голос
/ 08 января 2020

Использовать Текстовый литерал , например,

SELECT REGEXP_REPLACE(q'#91D5 ZBA DISCONNECTION  https://mail.com/owa/#path=/''mailÂ]'*Debit Bank Ctry next Business Day is 06-Jan-2020#', '[^0-9A-Za-z]', ' ')  
FROM dual;  

quote_delimiter - любой одно- или многобайтовый символ, кроме пробела, табуляции и возврата. quote_delimiter может быть одинарной кавычкой. Однако, если quote_delimiter присутствует в самом текстовом литерале, убедитесь, что за ним сразу же не стоит одна кавычка.

Если открывающая quote_delimiter является одним из [, {, <, или (, тогда закрывающая <em>quote_delimiter должна соответствовать],},> или). Во всех остальных случаях открывающий и закрывающий quote_delimiter должен совпадать.

0 голосов
/ 08 января 2020

Я полагаю, что причина того, что символ Â не заменяется, состоит в том, что конкретное сопоставление, которое вы используете, рассматривает Â и A как один и тот же символ. Один из возможных путей решения этой проблемы - принудительное сопоставление, которое различает два символа при запросе:

SELECT
    REGEXP_REPLACE(val, '[^0-9A-Za-z]', ' ')
FROM yourTable
COLLATE utf8_unicode_ci;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...