2017-02-15 7 views
0

は、私はすべてのヘルプは高く評価されているOracle最下位ゼロを含む数値の丸め方は?

Select round (123.50000065 , 4) from dual; 
Output : 123.5 
Required output: 123.5000 

で次のSQLクエリを実行しようとしています。 ..

+0

あなたは123.00005、123.00004のために何を持っているでしょう、それは数を丸める場合123.5000

テストを123.00008? – Aleksej

答えて

0

ROUND(numeric_expressionに、長さ[機能])

SELECT ROUND(123.9994, 3), ROUND(123.9995, 3); 

出力:

123.9990 124.0000

0

代わりのround()、小数型にto_char()又はcast()を使用:

select to_char(val, '999.9999'), 
     cast(val as decimal(10, 4)) 
0

You proba以下は

が必要な文字列に小数点以下4桁とフォーマットに値を丸め:

Select to_char(123.50000065, '999999999990D9999') x from dual; 

あなたが実際に数ラウンドあなただけしたい、つまりたくない場合はBLY to_charrequired formatで使用したいです

Select to_char(trunc(123.50000065, 4), '999999999990D9999') x from dual; 
0

数字を表示する形式を制御するには、正しい形式のマスクを適用して文字列にキャストすることができます。

あなたは、入力値の周りに必要な方法に応じて、これらのいずれかが有用である可能性:

with test(x) as (
    select 123.50000065 from dual union all 
    select 123.00004 from dual union all 
    select 123.00005 from dual union all 
    select 123.00008 from dual 
) 
select x, 
     to_char(x, 'FM99999999.0000'), 
     to_char(trunc(x, 4), 'FM99999999.0000') 
from test ; 

結果:

      X TO_CHAR(X,'FM9 TO_CHAR(TRUNC(
-------------------------- -------------- -------------- 
      123,50000065000 123.5000  123.5000 
      123,00004000000 123.0000  123.0000 
      123,00005000000 123.0001  123.0000 
      123,00008000000 123.0001  123.0000 
0

は "丸め" は、数学的概念です。値(サンプル入力あり)は123.5です。数学的に123.5000は123.5と同じです。それらはSTRINGSとだけ異なります。

123.5を123.5000と表示する1つの方法は、to_char()round()をラップすることです。しかし、これはさらなる計算では使用できないことを意味します(実際にはオラクルはこれを許可します)。のように、データ型の不一致エラーをスローするのではなく数値に暗黙の変換を行います。

多くの場合、クライアントソフトウェア(SQL Developer、SQL * Plus、Toadなど)の書式設定に対処する方が良い場合があります。ここでは、SQL * Plusでそれを行うことができる方法である。

SQL> Select round (123.50000065 , 4) as result from dual; 

    RESULT 
---------- 
    123.5 

-- change the format of the numeric column "result" 

SQL> column result format 999.0000 

SQL> Select round (123.50000065 , 4) as result from dual; 

    RESULT 
--------- 
123.5000 
0

私はあなたのクエリから123.5を得たかを確認することはできません。鉱山の結果123.50000000

私が正しく理解していれば、あなたの4桁の小数点以下の桁が必要です。 cast

select cast(123.50000065 as numeric(38,4)) 

出力しようとしない理由:

select cast(123.50000065 as numeric(38,6))

が出力:123.500001

関連する問題