Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как заставить выводить числа меньше единицы с нулем впереди? / 11 сообщений из 11, страница 1 из 1
06.05.2004, 14:32
    #32509203
anbond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить выводить числа меньше единицы с нулем впереди?
Как заставить выводить числа меньше единицы с нулем впереди?
Чтобы результат был например 0,5 а не ,5 ?
И в то же время целые выводить как целые?
...
Рейтинг: 0 / 0
06.05.2004, 14:36
    #32509212
Ernesto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить выводить числа меньше единицы с нулем впереди?
TO_CHAR с маской форматирования
4ex: to_char(myvar, '9990,999')
...
Рейтинг: 0 / 0
06.05.2004, 14:38
    #32509214
Ernesto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить выводить числа меньше единицы с нулем впереди?
to_char(myvar, '9990 .[\b]999')
...
Рейтинг: 0 / 0
06.05.2004, 15:19
    #32509310
anbond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить выводить числа меньше единицы с нулем впереди?
Дело в том, что мне не нужен жесткий формат.
Интересует на уровне сервера это можно как-нибудь решить?
Чтобы, например
Код: plaintext
select  1 / 2  from dual 
возвращал 0,5 а не ,5
...
Рейтинг: 0 / 0
06.05.2004, 15:22
    #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
Период между сообщениями больше года.
24.01.2022, 13:35
    #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
24.01.2022, 15:02
    #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
24.01.2022, 15:04
    #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
24.01.2022, 18:15
    #40129144
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить выводить числа меньше единицы с нулем впереди?
интересно, -5 (минус 5) меньше единицы?
...
Рейтинг: 0 / 0
24.01.2022, 18:36
    #40129147
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить выводить числа меньше единицы с нулем впереди?
Ролг Хупин

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


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

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


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