2013-03-20 3 views
2

Я использую этот запрос для замены одного символа в ячейкезаменить два символа в одной ячейке

select replace(id,',','')id from table 

Но я хочу, чтобы заменить два символа в ячейке. Если ячейка имеет эти данные (1,3.1), и я хочу, чтобы она выглядела так: (131). Как заменить два разных символа в одной ячейке?

ответ

0

Повторите замену.

select replace(replace(id,',',''), '.','') id from table 
+0

перевод намного лучше! – knagaev

0

ли это:

select REPLACE(REPLACE(id,',',''),'.','') 
4

Использование ПЕРЕВЕСТИ вместо REPLACE(). Он заменяет каждое вхождение символа в первом шаблоне совпадающим символом во втором. Чтобы удалить символы, просто оставьте сокращенную строку замены:

select translate(id, '1,.', '1') id from table 

Обратите внимание, что вторая строка не может быть нулевой. Следовательно, необходимо включить 1 (или некоторый другой символ) в обе строки.

Find out more.

Очевидно, чем больше символов, нужно преобразовать/удалить более привлекательным ПЕРЕВЕСТИ() становится. Основное использование REPLACE - это изменение шаблонов (например, слов), а не отдельных символов.

0

Или использовать регулярное выражение:

select regexp_replace(id, '[.,]', '') id from table 

Find out more

+0

По моему опыту функции регулярного выражения выполняются медленнее - на порядок меньше на 10 г по сравнению с их эквивалентами без регулярного выражения. Поэтому я думаю, что разумно использовать 'regexp_replace()' и т. Д., Только нам действительно нужна сила регулярных выражений. – APC

3

Можно использовать

select replace(translate(id,',.',' '),' ','') from table; 

или

select regexp_replace('1,3.1','[,.]','') from dual; 

или

select replace(replace(id,',',''),'.','') from table; 
Смежные вопросы