Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将oracle数据转换为十进制后的两个零_Java_Sql_Oracle - Fatal编程技术网

Java 将oracle数据转换为十进制后的两个零

Java 将oracle数据转换为十进制后的两个零,java,sql,oracle,Java,Sql,Oracle,我对甲骨文有一个要求 Sample Data ----------- 345 34 23423 我希望输出像这样 Expected output --------------- 345.00 34.00 23423.00 查询可以是通用的,也可以是特定于Oracle的 可以使用oracle中的to_char函数,但数据长度超过25,因此to_char将在此处失败。使用以下方法: SELECT CAST(YOUR_COL as decimal(38,2)) as OUTPUT FOM x

我对甲骨文有一个要求

Sample Data
-----------
345
34
23423
我希望输出像这样

Expected output
---------------
345.00
34.00
23423.00
查询可以是通用的,也可以是特定于Oracle的

可以使用oracle中的to_char函数,但数据长度超过25,因此to_char将在此处失败。

使用以下方法:

SELECT
   CAST(YOUR_COL as decimal(38,2)) as OUTPUT
FOM xyz

或者谷歌

试试像这样的东西

注意:调整数字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小提琴

编辑:这就是为什么我会在开头加上注释,这取决于你的号码。 对于你的情况,你可以

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 |

会很脏,但它对你有用

to_char(number_value,'FM'||LPAD(9,38,9)||'.90')
使用最大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;

我试着用它来施法。。但问题是数据的长度是不同的。为什么不在Java代码中使用DecimalFormat类?这就是问题所在,我正在对数据进行SQOOP并将其转储到HDFS中。因此,唯一可用的选项是使用sql查询。我不想在它上面运行一个额外的MapReduce来转换数据。它的可能副本不是上述问题的副本。我在列中有长度超过20的数据。我需要在小数点后加一个二零。to_char函数指定的可能性999有一个限制。你能试试吗?我试着选择CAST456作为小数38,2作为双精度输出;结果是456。我想要的是456.00。有趣的是,它在我的ORA系统上是正确的。这一定是某种数据库配置。感谢您的反馈。从dual选择至_char 123456789101121314,“999999999 0.00”;你现在能试试吗?我无法预测值的长度。架构中给出的大小为32,2,这意味着可以存储大小为32的值。选择“将字符9875466666666666623165465465456456456456466456665456456456456645644564445,'99999999999999999999999999999999999999999'作为双精度中的金额;在这种情况下,这将不起作用。这已超过Oracle的数字类型精度限制。您将无法使用您提到的值将数据存储在表中。而且,这个解决方案实际上与后来被接受的解决方案完全相同。唯一的区别就是答案是使用lpad为numeric32,2伟人构建了一长串9悲伤的示例。。我一直在寻找这样的解决方案。非常感谢……对于| charnumber | u value,'FM'| | | LPAD9,38,9 | | |'.90'对我来说非常有用。请解释一下“FM”| | LPAD9,38,9 | | |“.90”的含义,例如LPADA,5,A=aaaaaaa 5次。。我正在形成长度格式model9999999。。布拉布拉,用这个。