оракул варчар к номеру - PullRequest
29 голосов
/ 20 июля 2009

Как конвертировать значение oracle varchar в число

например

table - exception
exception_value 555 where exception_value is a varchar type

Я хотел бы проверить значение столбца exception_value

select * from exception where exception_value = 105 instead of
select * from exception where exception_value = '105'

Ответы [ 5 ]

37 голосов
/ 20 июля 2009

Вы должны использовать функцию TO_NUMBER :

select * from exception where exception_value = to_number('105')
12 голосов
/ 21 июля 2009

Поскольку столбец имеет тип VARCHAR, вы должны преобразовать входной параметр в строку, а не преобразовывать значение столбца в число:

select * from exception where exception_value = to_char(105);
3 голосов
/ 18 ноября 2013

Если вы хотите форматированный номер, используйте

SELECT TO_CHAR(number, 'fmt')
   FROM DUAL;

SELECT TO_CHAR('123', 999.99)
   FROM DUAL;

Результат 123,00

2 голосов
/ 18 декабря 2017

Я проверил предложенные решения, все они должны работать:

select * from dual where (105 = to_number('105'))

=> доставляет одну фиктивную строку

select * from dual where (10 = to_number('105'))

=> пустой результат

select * from dual where ('105' = to_char(105))

=> доставляет одну фиктивную строку

select * from dual where ('105' = to_char(10))

=> пустой результат

1 голос
/ 20 июля 2009

выберите to_number (exception_value) из исключения, где to_number (exception_value) = 105

...