我有一个表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
请帮我理解这个逻辑
答案 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
修饰符停止显示所有尾随数字的行。
在脚趾格式模型中,小数点的两侧需要足够的占位符,以说明您可能需要处理的所有值范围。 (我的原始编辑不够,因此最后一个值的最后一位被无声地截断了……)