Oracle SQL: Нужен плавающий столбец с десятичным значением по умолчанию в запросе выбора - PullRequest
0 голосов
/ 21 марта 2019

У меня есть таблица DATA_TABLE, она имеет столбец MAX_RATE_UNIT в качестве значения с плавающей запятой.

Ниже приведены значения таблицы и столбца MAX_RATE_UNIT, например,

DATA_TABLE
----------
MAX_RATE_UNIT
-----------
1.2
1
3
3.4
0.445
2343.43434
2.123
0.3433423

Я хочу запрос на выборку, который имеет возвратрезультат как минимум одна десятичная точка, если десятичное число не имеет значения в столбце, так как 1 -> 1,0 и 3-> 3,0, а остальное равно возвращаемому значению,

ВЫХОД:

MAX_RATE_UNIT
-------------
1.2
**1.0**
**3.0**
3.4
0.445
2343.43434
2.123
0.3433423

Помоги мне по этой логике,

1 Ответ

1 голос
/ 21 марта 2019

Преобразование числа в строку явно с помощью to_char() и подходящей модели формата:

-- CTE for sample data
with data_table (max_rate_unit) as (
            select 1.2 from dual
  union all select 1 from dual
  union all select 3 from dual
  union all select 3.4 from dual
  union all select 0.445 from dual
  union all select 2343.43434 from dual
  union all select 2.123 from dual
  union all select 0.3433423 from dual
)
-- actual query
select to_char(max_rate_unit, 'FM999999990.099999999') as max_rate_unit
from data_table;

MAX_RATE_UNIT       
--------------------
1.2
1.0
3.0
3.4
0.445
2343.43434
2.123
0.3433423

Стратегическое использование 0 вместо 9 непосредственно перед и после десятичной точки означает, что вы получитеведущий ноль для значений <1 и не менее одной цифры после десятичной точки;модификатор <code>FM останавливает отображение всех последних цифр.

В модели формата Toe по обе стороны от десятичной запятой должно быть достаточно заполнителей, чтобы учесть весь диапазон значений, которые вам, возможно, придется обработать.(Моему исходному редактированию не хватило, поэтому последняя цифра последнего значения была молча усечена ...)

...