#sql #oracle #nls
Вопрос:
В базе данных есть столбец с номером. Когда он извлекается в виде символа с использованием TO_CHAR, цифра перед десятичной точкой теряется.
Select TO_CHAR(column) from table
Например, 0,5 сохраняется в столбце, но при выборе значения возвращается .5
Аналогично, если сохраняется значение -0.5, то возвращается значение-.5 .
Каковы могли быть причины этого ?
Связано ли это с настройкой NLS ?Если да, то какой параметр следует изменить, чтобы получить значение по мере его сохранения .
Комментарии:
1. Начальные нули не хранятся в базе данных. Номера хранятся в соответствии с внутренними форматами. Если вам нужен начальный ноль, то используйте
to_char(col, '0.0')
.2. @PTK хранение и отображение-это две разные вещи. Используйте эту
dump()
функцию, чтобы увидеть, как она на самом деле хранится. Это не'-0.5'
.
Ответ №1:
Вы можете сделать что-то вроде этого:
select to_char(.5,'0.000000')from dual
Это не проблема NLS. NLS изменил такие вещи, как десятичный разделитель, разделитель тысяч и т. Д.
Не уверен, сколько десятичных знаков нужно после десятичной точки, так что вы можете это изменить. Я бы также посмотрел на модели числового формата doc
Комментарии:
1. Столбец-это ЧИСЛО, поэтому точность будет разной. Как узнать количество нулей, которые будут добавлены в TO_CHAR после и до десятичной точки
2. Перед десятичной точкой никогда не бывает больше одного нуля.