我在Oracle中有一个要求。
Sample Data
-----------
345
34
23423
我希望输出像这样
Expected output
---------------
345.00
34.00
23423.00
查询可以是通用的,也可以是Oracle特有的。
可以使用oracle中的to_char函数,但是数据的长度超过25,因此to_char将在那里失败。
答案 0 :(得分:1)
尝试使用类似
的内容(注意:改编" 9"以获得具有最长编号的正确输出)
select a, to_char( a, '999999999990.00' ) from T;
| A | TO_CHAR(A,'999999999990.00') |
|--------|------------------------------|
| 0.1 | 0.10 |
| 0.02 | 0.02 |
| 2 | 2.00 |
| 2.2 | 2.20 |
| 2.22 | 2.22 |
| 10.22 | 10.22 |
| 101.22 | 101.22 |
SQL小提琴 http://sqlfiddle.com/#!4/6a168/6
编辑:这就是为什么我在开头放置NOTE,这取决于你的号码。 对于你的情况,你可以把
select to_char( 1234567891011121314, '9999999999999999990.00' ) from dual;
对于数字(32,2),可以是:
create table T ( a numeric(32,2) );
insert into T values( 123456789012345678901234567890.12 );
| TO_CHAR(A,'999999999999999999999999999990.00') |
|------------------------------------------------|
| 123456789012345678901234567890.12 |
答案 1 :(得分:1)
会很脏,但它对你有用。
to_char(number_value,'FM'||LPAD(9,38,9)||'.90')
使用MAX 38数字值作为格式模型。
with my_data(number_value) as
(
select 999999999999 from dual
union
select 9 from dual
union
select .009 from dual
union
select .9 from dual
union
select 999 from dual
)
select to_char(number_value,'FM'||LPAD(9,38,9)||'.90') from my_data;
答案 2 :(得分:0)
使用此:
SELECT
CAST(YOUR_COL as decimal(38,2)) as OUTPUT
FOM xyz
或google!