2013-09-16 3 views
2

У меня сейчас есть назначение, где мне приходится обрабатывать данные из многих стран. Мой клиент дал мне список допустимых символов, позволяет называть его:Oracle/SQL - Удаление неопределенных символов из строки

«Абер = *»

Все остальные символы должны просто быть изменен на «_».

Я знаю, что преобразование для конкретных символов моей страны (æøå), легко сделать с чем-то вроде

select replace ('Ål', 'Å', 'AA') from dual; 

Но как бы я идти о удалив все ненужные «шум», не разделяя его на символ в каждом конкретном сравнение символов?

Например, «медведь * 2 = страх» должен стать «медведем» _ = _ear »как 2, а f нет в принятом списке.

+0

Ваша большая проблема, вероятно, будет препятствовать возврату этих «плохих символов» в db после того, как вы сделаете конверсии. Я предполагаю, что у вас много источников этих данных, которые очень быстро вернут эти символы. – tbone

ответ

0

Oracle 10g и выше. В качестве одного из подходов, вы можете использовать обычную функцию экспрессии regexp_replace():

больше о regexp_replace() функции
select regexp_replace('bear*2 = fear', '[^aber =*]', '_') as res 
    from dual 


res 
------------------------------ 
bear*_ = _ear 

Find out.

+0

Спасибо Николас, я не знал, что эта функция доступна. – MelanPython

Смежные вопросы