Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Round без нуля / 11 сообщений из 11, страница 1 из 1
26.08.2020, 12:54
    #39992537
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
Firebird 3.
Код: sql
1.
SELECT ROUND(10.0, 1) || '/' || ROUND(0.0, 1) || '/' || ROUND(10.12, 1)  FROM RDB$DATABASE


вернет строку "10.0/0.0/10.1", а хотелось бы "10/0/10.1".
Возможно ли такое легко и быстро? Или придется писать свою процедуру/функцию чтобы проверить ".0" и обрезать эти 2 символа?

P.S. В реале вместо 10.0, 0.0 и 10.12 поля типа DOUBLE PRECISION.

Спасибо.
...
Рейтинг: 0 / 0
26.08.2020, 13:25
    #39992542
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
Преобразовать к integer?
...
Рейтинг: 0 / 0
26.08.2020, 13:34
    #39992544
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
но тогда 10.12 округлиться тоже к 10,а должно быть 10.1
...
Рейтинг: 0 / 0
26.08.2020, 14:01
    #39992553
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
X11Или придется писать свою процедуру/функцию

Да, придётся писать. И вообще нефиг заниматься форматированием на сервере.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.08.2020, 14:17
    #39992556
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
X11
Firebird 3.
Код: sql
1.
SELECT ROUND(10.0, 1) || '/' || ROUND(0.0, 1) || '/' || ROUND(10.12, 1)  FROM RDB$DATABASE


вернет строку "10.0/0.0/10.1", а хотелось бы "10/0/10.1".
Возможно ли такое легко и быстро? Или придется писать свою процедуру/функцию чтобы проверить ".0" и обрезать эти 2 символа?

P.S. В реале вместо 10.0, 0.0 и 10.12 поля типа DOUBLE PRECISION.

Спасибо.


Код: sql
1.
select cast( 123.456 as numeric(15,2))||'/'||cast( 123.456 as numeric(15,1))||'/'||cast( 123.456 as numeric(15,0)) from RDB$DATABASE
...
Рейтинг: 0 / 0
26.08.2020, 14:35
    #39992560
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
pastor, Вы так и не поняли проблему.
Выводить дробную часть нужно только, если она больше нуля
...
Рейтинг: 0 / 0
26.08.2020, 14:41
    #39992561
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
X11Выводить

Firebird не занимается выводом. Это задача клиентских приложений.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.08.2020, 14:45
    #39992562
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
X11> pastor, Вы так и не поняли проблему.

Мы поняли твою попытку (которая тебе не нравится)
решения проблемы (которую ты не озвучил).

Нужно для чего? Откуда берётся округляемое и
куда (и зачем) отправляется результат "округления"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.08.2020, 15:08
    #39992567
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
Не страдайте фигнёй!
Код: plsql
1.
2.
3.
4.
SELECT Trim(TRAILING '.0' FROM Round(10.0, 1))
    || '/' || Trim(TRAILING '.0' FROM Round(0.0, 1))
    || '/' || Trim(TRAILING '.0' FROM Round(10.12, 1))
  FROM RDB$DATABASE
...
Рейтинг: 0 / 0
26.08.2020, 15:15
    #39992569
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
rdb_dev, спасибо большое.
То, что надо.
...
Рейтинг: 0 / 0
26.08.2020, 15:25
    #39992576
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Round без нуля
Это только для первого знака после запятой (т.е. для целых).

P.S. В корень зрить надо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Round без нуля / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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