Oracle SQL:需要在select查询中使用默认的一个十进制值的float列

问题描述 投票:0回答:1

我有一个表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并且重新生成是返回的相同值,

OUTPUT:

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

帮助我这个逻辑,

sql oracle11g oracle10g
1个回答
1
投票

使用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的前导零,小数点后至少一个数字; FM修饰符停止显示所有尾随数字。

在脚趾格式模型中需要足够的占位符(小数点的任一侧),以考虑您可能必须处理的全部值。 (我的原始编辑没有足够,所以最后一个数字的最后一位被静默截断...)

© www.soinside.com 2019 - 2024. All rights reserved.