Функция Oracle To_Char Как обработать, если это уже строка - PullRequest
3 голосов
/ 30 января 2012

Сценарий: я вызываю функцию, которая возвращает поле, в которое вводит пользователь. Поле обычно возвращает число типа «120000», которое затем я использую to_char для преобразования в «120 000».

Проблема: некоторые пользователи вводят такие значения, как «120 000», что выдает ошибку при попытке использовать to_char. Также функция вернет пробел '', если значение не найдено. Я пытался что-то с to_number ранее, и у меня есть проблема с '' я считаю.

Вопрос: Как лучше всего решить эту проблему? Проверка заявления случая для ','? Используя to_number тогда to_char?

Примечание: я могу взломать решение вместе. Мне просто интересно, как лучше всего с этим справиться.

1 Ответ

7 голосов
/ 31 января 2012

Вместо того, чтобы использовать REPLACE, вы должны использовать более мощную функцию REGEXP_REPLACE. http://www.orafaq.com/wiki/REGEXP_REPLACE

Затем вы можете удалить любой нечисловой символ из строки, а затем отформатировать его так, как вам нравится.

В вашем случае это будет что-то вроде:

REGEXP_REPLACE(<your field>, '[^0-9]+', '');

При этом все нечисловые символы заменяются нулями, что эффективно удаляет их из строки.

Смотрите и этот ответ: Oracle: замена нечисловых символов в строке

...