оракул регулярное выражение заменить (оставить только a-z) - PullRequest
5 голосов
/ 21 декабря 2010

У меня есть данные в столбце last_name.

Эти данные поступают из Интернета, и время от времени пользователи копируют вставку фамилии из текстового документа. Это проблема, когда фамилия имеет одинарную кавычку. Каким-то образом одиночная цитата из словесного документа странная.

Я хочу написать регулярное выражение замены оракула в моем запросе выбора таким образом, чтобы оно заменяло все в столбце last_name, но просто сохраняло (a-z или A-Z).

Это выполнимо?

Ответы [ 4 ]

12 голосов
/ 22 декабря 2010

наконец я пошел с этим:

REGEXP_REPLACE(mbr_last_name,'[^a-zA-Z'']','') replaced_last_name 

Я держу от a до z от A до Z и одну кавычку

2 голосов
/ 21 декабря 2010

Под "странным" вы подразумеваете, что это не обычная одинарная кавычка?В Word есть некоторые действительно глупые символы, которые он использует по умолчанию (называемые « Умные кавычки (google)»). Они немного похожи на стандартные кавычки, но ведут себя по-разному при преобразовании в ASCII и из него, например в UTF8

Чтобы идентифицировать их в SQL, сделайте выборку с помощью функции ASCIISTR и найдите подстроку в форме <backslash><4 digits> (Это работает с БД с символами UTF-8 и simialr, я не уверено его возврате в базу данных с параметрами ASCII NLS)

select asciistr(COLUMN) from table

Я использовал следующий код, чтобы удалить их в какой-то недавней работе, которую я делал

update jiraissue
set summary = replace(asciistr(summary), '\2013','-')
where asciistr(summary) like '%\2013%';`)

HTH

1 голос
/ 22 декабря 2010

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

select regexp_replace('foobar1000!!!!','[[:cntrl:]]|[[[:digit:]]|[[:punct:]]') from dual;

REGEXP_REPLACE('FOOBAR1000!!!!','[[:CNTRL:]]|[[[:DIGIT:]]|[[:PUNCT:]]') 
----------------------------------------------------------------------- 
foobar   
0 голосов
/ 22 декабря 2010

Стоит посмотреть на функцию CONVERT, которая будет выполнять преобразование между наборами символов. Вы можете преобразовать в «простые» 7-битные символы ASCII для удаления аномалий.

Например

выберите конвертировать ('êê', 'US7ASCII') из двойной;

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