2017-03-25 13 views
0

フィールドの長さと小数点以下の桁数に基づいて、パディングされたゼロと、以下で定義される条件をいくつか使用して、望ましい出力を得ようとしています。私は解決の一部に達しましたが、完全にはありません。ここに私の必要条件があります。PLSQL:切り捨てによる数字の変換と切り捨て

与えられた数が179.237の場合、出力では、全長が小数点以下2桁で12になります。小数点も削除する必要があります。

179.237 

期待出力(エンドietruncateと小数点で2つの小数と全長12が除去される):

入力(サンプルが、任意の長さであることができる)が与えられる

000000017923 

与えられた数値の小数点以下の桁数がある場合、またはそれ以外の桁数がない場合(例:179.2の場合は、次のように出力されます(右端が0です)

000000017920 

マイコード:

SELECT LPAD(TRIM(RPAD(TO_CHAR(TO_NUMBER(REPLACE(179.237,'.')),9999999999.00),12)),12,'0') from dual; 

マイ出力:

000000179237 

だから、私はこの中に切り捨て一部を逃したと思います。あまりにも多くの機能を持っているので、このコードを簡略化できるかどうかアドバイスしてください。本当にありがとう。 100その後、TRUNCによって

答えて

2

乗算は、残りの小数を削除し、000000000000をマスク形式でTO_CHARを使用するために食べた:

SELECT TO_CHAR(TRUNC(179.237*100),'000000000000') AS VALUE 
FROM DUAL; 

出力

VALUE 
------------ 
000000017923 
+0

はシンプルなソリューションのためにどうもありがとうございます。 ) – Karthik