Oracle SQL:在选择查询中需要浮点数列具有默认的一个十进制值

时间:2019-03-21 15:23:09

标签: sql oracle11g oracle10g

我有一个表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

我想要一个select查询,如果tha列值中没有小数,则返回的结果至少为一个小数点,因为1-> 1.0和3-> 3.0和restg是要返回的相同值,

输出:

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

请帮我理解这个逻辑

1 个答案:

答案 0 :(得分: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修饰符停止显示所有尾随数字的行。

在脚趾格式模型中,小数点的两侧需要足够的占位符,以说明您可能需要处理的所有值范围。 (我的原始编辑不够,因此最后一个值的最后一位被无声地截断了……)