我有一个表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
帮助我这个逻辑,
使用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
修饰符停止显示所有尾随数字。
在脚趾格式模型中需要足够的占位符(小数点的任一侧),以考虑您可能必须处理的全部值。 (我的原始编辑没有足够,所以最后一个数字的最后一位被静默截断...)