2012-02-10 3 views
2

これはかなりシンプルですが、役に立たないものは見つかりませんでした。私のSQLクエリでOracleのto_char関数は、任意の精度と特定の位取りを持つ数値書式を使用します。

私はいくつかの単一のスケール値で数字を四捨五入している - ラウンド(数、1)。数字が小数点以下の四捨五入されている場合は、 '9,9'の形式で印刷されます。

一方、数字が整数に丸められている場合、10桁の数字がゼロであっても「9,9」形式の数字を選択するクエリが必要ですが、カンマの後にゼロのない整数値のみが出力されます。要するに

、私は、出力121,0に例

to_char((select round(121.01,1), from dual), '*,1') ;のためのようなものが必要だと思います。

これを行うにはどのような方法が最適ですか?事前に感謝

Korhan

答えて

3

あなたがしなければならないすべてはあなたのto_charにしたい小数点以下の桁数を指定しています。フォーマットマスクを使用する際の問題は、小数点の前に必要な数字の数を指定する必要があることです。

SQL> select to_char(round(121.01,1),'999.9') from dual; 

TO_CHA 
------ 
121.0 

SQL> select to_char(round(121.4,1),'999.9') from dual; 

TO_CHA 
------ 
121.4 

SQL> select to_char(round(121,1),'999.9') from dual; 

TO_CHA 
------ 
121.0 

SQL> select to_char(round(5121,1),'999.9') from dual; 

TO_CHA 
------ 
###### 

SQL> 

formatting optionsが多数あります。

2

使用0ではなく小数点以下の桁数:この単純なクエリはあなたを助けるかもしれ

SELECT TO_CHAR(ROUND(121.01, 1), '990D0') num FROM DUAL; 

NUM 
------ 
121.0 
+0

(ただし、固定スケールで)うまく、あなたはこの書式マスクを使用することができます ' 'FM9G999G999G999G990D0''(あるいはそれ以上)。 –

2

、機能TO_CHAR

select to_char(round(121.01,1), '999.0') from dual; 

9 - を示しています出力のゼロをブロック/非表示にします。

0 - 小数点の前後の任意の場所の出力に0を表示することを示します。

注:「9/0の

番号の前で/小数点以下は、あなたが小数点の後に/ beore表示したい桁数です。あなたは、任意の精度で数値を表示したい場合は

関連する問題