Hitachi

Hitachi Advanced Data Binder SQLリファレンス


8.4.12 TRUNC

指定された桁数より下の数値を切り捨てた値を返します。

日時データを切り捨てるスカラ関数TRUNCについては,「8.9.10 TRUNC」を参照してください。

〈この項の構成〉

(1) 指定形式

スカラ関数TRUNC::=TRUNC(対象データ〔,桁数〕)
 
  対象データ::=値式
  桁数::=値式

(2) 指定形式の説明

対象データ

処理対象の数データを指定します。

指定規則を次に示します。

  • 対象データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。

  • 対象データには,数データを指定してください。数データについては,「6.2.1 データ型の種類」の「(1) 数データ」を参照してください。

  • 対象データには,?パラメタを単独で指定できません。

桁数

桁数を指定します。

指定規則を次に示します。

  • 桁数は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。

  • 桁数には,INTEGERBIGINT型,またはSMALLINT型のデータを指定してください。

桁数の指定値が正(n)の場合は,対象データの小数点第n位を残して,小数点n+1位以下が切り捨てられます。桁数の指定値が負(-n)の場合は,対象データの整数部n桁以下が切り捨てられます。

桁数を省略した場合,0が仮定されて小数点以下の値が切り捨てられます。

スカラ関数TRUNCの実行結果の例を次に示します。

(例)

数データ123.456の小数点第2位までを残し,第3位以下を切り捨てます。

TRUNC(123.456,2) → 123.450

(3) 規則

  1. 桁数に?パラメタを指定した場合,?パラメタに仮定されるデータ型はINTEGER型になります。

  2. 実行結果のデータ型と長さは,引数に指定した数データのデータ型と長さになります。

  3. 実行結果の値は,非ナル値制約なし(ナル値を許す)となります。

  4. 対象データまたは桁数がナル値の場合,実行結果はナル値になります。

  5. DOUBLE PRECISIONまたはFLOATのデータは誤差を含むため,スカラ関数TRUNCで使用する場合は注意が必要です。例えば,次のようなケースでは,計算結果が期待した結果になりません。

    TRUNC(2.172157E4,2) → 2.1721560000000001E4

    これは,2進法では0.01を有限桁で表現できないため,0.011.0E-02が正確には等しくないことが原因となっています。切り捨ての結果として正確な値が必要な場合は,対象データにはDECIMALまたはNUMERICのデータを使用してください。

  6. 引数に指定できるデータ型と桁数の有効範囲を次の表に示します。

表8‒8 引数に指定できるデータ型と桁数の有効範囲

項番

引数(数データ)に指定できるデータ型

桁数の有効範囲

1

INTEGER

-180

2

BIGINT

3

SMALLINT

-90

4

DECIMAL(m,n)

-(m-n-1)n

5

NUMERIC(m,n)

6

DOUBLE PRECISION

-308323

7

FLOAT

(凡例)mn:正の整数

桁数の指定値が有効範囲外であっても,エラーとなりません。正の値で有効範囲外のときは,切り捨ては発生しません。負の値で有効範囲外のときは,結果は0となります。

桁数の指定値と変換結果の例を次に示します。

例1

C1列のデータ型がINTEGER型,値が123456789の表T1に対して,次のSQL文を実行します。

SELECT TRUNC("C1",x) FROM "T1"

このときのTRUNC("C1",x)の結果を次の表に示します。

表8‒9 xの値とSQL文の実行結果

xの値

TRUNC(C1,x)の結果

1以上

123456789

0

123456789

-1

123456780

-8

100000000

-9以下

0

例2

C2列のデータ型がDECIMAL(5,2),値が123.45の表T1に対して,次のSQL文を実行します。

SELECT TRUNC("C2",y) FROM "T1"

このときのTRUNC("C2",y)の結果を次の表に示します。

表8‒10 yの値とSQL文の実行結果

yの値

TRUNC(C2,y)の結果

3以上

123.45

2

123.45

1

123.40

0

123.00

-1

120.00

-2

100.00

-3以下

0.00

(4) 例題

例題1

T1C2列およびC3列のデータの小数点第2位までを残して,小数点第3位以下を切り捨てます。

SELECT TRUNC("C2",2),TRUNC("C3",2) FROM "T1"

[図データ]

例題2

T1C1列〜C3列のデータの整数部2桁以下を切り捨てます。

SELECT TRUNC("C1",-2),TRUNC("C2",-2),TRUNC("C3",-2) FROM "T1"

[図データ]