Как разрешить акцентированные Charaters в Oracle, используя regexp_replace в Oracle? - PullRequest
3 голосов
/ 11 апреля 2019

Case: принять person_name, удовлетворяющее следующим критериям:

  1. Разрешает любые буквенные символы
  2. Пробел
  3. Тире
  4. Апостроф
  5. Акцентная могила

Был выполнен предварительный расчет для сохранения имени в строке "PERSON_NAME"

LOGIC: SUBSTR(REGEXP_REPLACE(PERSON_NAME,'[^A-Za-z .`''-]+',''),0,50)

SELECT SUBSTR(REGEXP_REPLACE('cafè','[^A-Z|a-z| |.|`|''|-]+'),0,50) 
    FROM dual;

Проходя почти все случаи, кроме случаев с акцентированными символами:

Например:

Ожидаемый результат: cafè [то есть символ над e `не должен быть отфильтрован]

Фактический результат: caf

1 Ответ

1 голос
/ 11 апреля 2019

Вы можете использовать:

select SUBSTR(REGEXP_REPLACE('cafè-` t *'' {','[[:digit:]]') ,0,50) as "String"
  from dual;

String
--------------
cafè-` t *' {

, поскольку в вашем списке ограничений нет информации о числовых выражениях.

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