8.4.9 ROUND
対象データを小数点以下n桁に丸めた値を返します。
日時データを丸めるスカラ関数ROUNDについては,「8.9.7 ROUND」を参照してください。
- 〈この項の構成〉
(1) 指定形式
スカラ関数ROUND::=ROUND(対象データ〔,桁数〕) 対象データ::=値式 桁数::=値式
(2) 指定形式の説明
- 対象データ:
-
数データ(小数点以下n桁に丸める値)を指定します。
指定規則を次に示します。
-
対象データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
対象データには,数データを指定してください。数データについては,「6.2.1 データ型の種類」の「(1) 数データ」を参照してください。
-
対象データには,?パラメタを単独で指定できません。
-
- 桁数:
-
桁数を指定します。
指定規則を次に示します。
-
桁数は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
桁数には,データ型がINTEGER型,BIGINT型,またはSMALLINT型のデータを指定してください。
-
桁数を省略した場合,桁数に0が仮定されます。
-
桁数に?パラメタを指定した場合,?パラメタのデータ型にINTEGER型が仮定されます。
-
(3) 規則
-
実行結果のデータ型を次の表に示します。
表8‒6 スカラ関数ROUNDの実行結果のデータ型 対象データのデータ型
実行結果のデータ型
INTEGERまたはBIGINT
INTEGER
SMALLINT
SMALLINT
DECIMAL(p,s)
または
NUMERIC(p,s)
p≦37の場合
DECIMAL(p+1,s)
p=38の場合
DECIMAL(38,s)
DOUBLE PRECISIONまたはFLOAT
DOUBLE PRECISION
-
対象データのデータ型で実行結果を表現できない場合,オーバフローエラーになります。
-
対象データのデータ型がSMALLINT型,INTEGER型,BIGINT型,DECIMAL型,またはNUMERIC型の場合,n+1桁の端数を四捨五入した値を返します。
(例)ROUND(325.72,1) → 325.70
なお,対象データが負の値の場合,次のように四捨五入されます。
(例1)ROUND(-2.3,0) → -2.0
(例2)ROUND(-2.7,0) → -3.0
-
対象データがDOUBLE PRECISION型またはFLOAT型の場合,n+1桁以下の端数に対して,最近接偶数への丸めを行った値を返します。
-
桁数に負の値を指定した場合は,整数部の指定桁以下を丸めます。
(例)ROUND(325.72,-1) → 330.00
-
桁数を省略するか,または0を指定した場合,小数点以下が丸められ,実行結果が整数になります。
(例)ROUND(325.72,0) → 326.00
-
対象データの範囲外の桁数を指定した場合,次のように処理されます。
-
桁数に正の値を指定した場合は,数値の丸めは実行されません。対象データの値をそのまま返します。
(例1)ROUND(0.12,5) → 0.12
(例2)ROUND(58,1) → 58
-
桁数に負の値を指定した場合は0を返します。
(例)ROUND(58,-5) → 0
-
-
実行結果の値は,非ナル値制約なし(ナル値を許す)となります。
-
対象データまたは桁数がナル値の場合,実行結果はナル値になります。
(4) 例題
- 例題
-
表T1のC1列〜C3列の値を次のように丸めます。
-
C1列:小数点第1位に丸めます(小数点第2位を四捨五入します)。
-
C2列:整数部の百の位に丸めます(十の位を四捨五入します)。
-
C3列:小数点第1位に最近接偶数への丸めを適用します。
この例では,HADBが動作する環境の丸めモードは,最近接偶数への丸めとします。
SELECT ROUND("C1",1),ROUND("C2",-2) ,ROUND("C3",0) FROM "T1"
-