powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как заставить выводить числа меньше единицы с нулем впереди?
11 сообщений из 11, страница 1 из 1
Как заставить выводить числа меньше единицы с нулем впереди?
    #32509203
anbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как заставить выводить числа меньше единицы с нулем впереди?
Чтобы результат был например 0,5 а не ,5 ?
И в то же время целые выводить как целые?
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #32509212
Ernesto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TO_CHAR с маской форматирования
4ex: to_char(myvar, '9990,999')
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #32509214
Ernesto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to_char(myvar, '9990 .[\b]999')
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #32509310
anbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что мне не нужен жесткий формат.
Интересует на уровне сервера это можно как-нибудь решить?
Чтобы, например
Код: plaintext
select  1 / 2  from dual 
возвращал 0,5 а не ,5
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #32509319
Фотография Andrew Campball
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае придется задавать маску.
Если используеш sqlplus, то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> select  1 / 2  as t from dual;

        T
 ---------
 
       . 5 

SQL> column t format  990 . 99 
SQL> select  1 / 2  as t from dual;

      T
 -------
 
    0 . 50 
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как заставить выводить числа меньше единицы с нулем впереди?
    #40128995
e.rassadnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот наиболее универсальное решение для заданного вопроса:
CREATE OR REPLACE FUNCTION NUM_TO_CHAR(p_number IN NUMBER,
p_decimal_places IN NUMBER DEFAULT 3)
RETURN VARCHAR2 IS
p_number2 NUMBER;
p_number3 NUMBER;
p_mask VARCHAR2(1000):='0';
BEGIN
p_number3:=ABS(ROUND(p_number,0));
IF (p_number3>9) THEN
FOR i IN 1..(LENGTH(TO_CHAR(p_number3))-1)
LOOP
p_mask := '9'||p_mask;
END LOOP;
END IF;
p_number2:=ROUND(p_number,p_decimal_places);
IF (p_decimal_places>0) THEN
p_mask:=p_mask||'.';
FOR i IN 1..p_decimal_places
LOOP
p_mask := p_mask||'9';
END LOOP;
END IF;
RETURN trim(to_char(p_number2, p_mask));
EXCEPTION
WHEN OTHERS THEN
RETURN '0';
END NUM_TO_CHAR;
/
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #40129038
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e.rassadnikov
Вот наиболее универсальное решение для заданного вопроса:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE OR REPLACE FUNCTION NUM_TO_CHAR(p_number IN NUMBER,
                                       p_decimal_places IN NUMBER DEFAULT 3) 
 RETURN VARCHAR2 IS
  p_number2 NUMBER;
  p_number3 NUMBER;
  p_mask   VARCHAR2(1000):='0';
BEGIN
  p_number3:=ABS(ROUND(p_number,0));
  IF (p_number3>9) THEN
    FOR i IN 1..(LENGTH(TO_CHAR(p_number3))-1)
    LOOP
       p_mask := '9'||p_mask;
    END LOOP;
  END IF;  
  p_number2:=ROUND(p_number,p_decimal_places);
  IF (p_decimal_places>0) THEN
    p_mask:=p_mask||'.';
    FOR i IN 1..p_decimal_places
    LOOP
       p_mask := p_mask||'9';
    END LOOP;
  END IF;    
  RETURN trim(to_char(p_number2, p_mask));
EXCEPTION
  WHEN OTHERS THEN
    RETURN '0';
END NUM_TO_CHAR;
/



Что это было?
зачем велосипед, который придется тащить и что не хватает в штатных Number Format Models

p.s.
памятка:
Как мне оформить свое сообщение?
HOWTO :: Как правильно задавать вопросы
Студентам, желающим помощи
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #40129042
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e.rassadnikov
Вот наиболее универсальное решение для заданного вопроса:
CREATE OR REPLACE FUNCTION NUM_TO_CHAR(p_number IN NUMBER,
p_decimal_places IN NUMBER DEFAULT 3)
RETURN VARCHAR2 IS
p_number2 NUMBER;
p_number3 NUMBER;
p_mask VARCHAR2(1000):='0';
BEGIN
p_number3:=ABS(ROUND(p_number,0));
IF (p_number3>9) THEN
FOR i IN 1..(LENGTH(TO_CHAR(p_number3))-1)
LOOP
p_mask := '9'||p_mask;
END LOOP;
END IF;
p_number2:=ROUND(p_number,p_decimal_places);
IF (p_decimal_places>0) THEN
p_mask:=p_mask||'.';
FOR i IN 1..p_decimal_places
LOOP
p_mask := p_mask||'9';
END LOOP;
END IF;
RETURN trim(to_char(p_number2, p_mask));
EXCEPTION
WHEN OTHERS THEN
RETURN '0';
END NUM_TO_CHAR;
/


Грёбаный экибастуз! через 18 лет нашел решение!
Респектище !
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #40129144
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно, -5 (минус 5) меньше единицы?
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #40129147
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин

Грёбаный экибастуз! через 18 лет нашел решение!
Респектище !


+
Это наверное рекорд по некропостингу/археологии))

Предлагаю ответить еще на https://www.sql.ru/forum/6218/vremenn-e-tablic-i-select а то вдруг автор там мучается почти со времен создания скуля.
...
Рейтинг: 0 / 0
Как заставить выводить числа меньше единицы с нулем впереди?
    #40129167
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне уже давно кажется, что некропостинг на скуле - это кто-то обучает ИИ.
Простите за оффтоп.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как заставить выводить числа меньше единицы с нулем впереди?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]