Hitachi

Hitachi Advanced Data Binder SQLリファレンス


6.2.1 データ型の種類

データ型の種類を次の表に示します。

表6‒5 データ型の種類

項番

分類

データ型

データ型コード※1

データ格納長

(単位:バイト)

データ形式

10進

16進

1

数データ

INTEGER

241

F1

8

整数(8バイト)

2

SMALLINT

245

F5

4

整数(4バイト)

3

DECIMAL(m,n)

229

E5

  • 1≦m≦4の場合:2

  • 5≦m≦8の場合:4

  • 9≦m≦16の場合:8

  • 17≦m≦38の場合:16

固定小数点数

4

NUMERIC(m,n)

5

DOUBLE PRECISION

225

E1

8

倍精度浮動小数点数

6

FLOAT

7

文字データ

CHARACTER(n)

197

C5

n

固定長文字列

8

VARCHAR(n)

193

C1

n+2

可変長文字列

9

日時データ

DATE

113

71

4

年,月,日の情報を持つ日付のデータ型

10

TIME(p)

121

79

3+↑p÷2↑

時,分,秒の情報を持つ時刻のデータ型

11

TIMESTAMP(p)

125

7D

7+↑p÷2↑

年,月,日,時,分,秒の情報を持つ時刻印のデータ型

12

バイナリデータ

BINARY(n)

149

95

n

固定長バイナリデータ

13

VARBINARY(n)

145

91

n+2

可変長バイナリデータ

14

配列データ

ARRAY

なし

なし

要素データ型に従う

順序付けられた一連のデータを要素とする一次元の配列データ

15

行データ

ROW

69

45

行長※2

行インタフェースで使用するデータ型

注※1

検索結果列のデータ型を表すコードです。

データ型コードは,CLI関数使用時にa_rdb_SQLDataType_t構造体に格納されます。

注※2

各列のデータ格納長の合計が行長になります。

〈この項の構成〉

(1) 数データ

INTEGER
  • 値の範囲が-9,223,372,036,854,775,808〜9,223,372,036,854,775,807の整数を扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    INTまたはINTEGER

  • データは,8バイトの2進形式です。

  • 定数は,100200という形式で記述します。定数については,「6.3 定数」を参照してください。

SMALLINT
  • 値の範囲が-2,147,483,648〜2,147,483,647の整数を扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    SMALLINT

  • データは,4バイトの2進形式です。

  • SMALLINTを使用すると,INTEGERを使用するよりも,データベースの容量を少なくできます。

DECIMALNUMERIC
  • 固定小数点数を扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    • DECIMAL型の場合

      DEC〔(m〔,n〕)〕またはDECIMAL〔(m〔,n〕)〕

    • NUMERIC型の場合

      NUMERIC〔(m〔,n〕)〕

    重要

    データ型にNUMERIC型が指定された場合,HADBはデータ型にDECIMAL型が指定されたと見なします。

  • 精度(全体の桁数)をm,位取り(小数部の桁数)をnで指定します。

  • mnは正整数で,1≦m38,0≦n38nmです。

  • mを省略すると38が仮定され,nを省略すると0が仮定されます。

  • データは2進形式で,位取りに合わせた値が格納されます。

  • 負の値は2の補数で表します。

  • データは,次の図に示すように精度によって2〜16バイトの整数データとして格納されます。

    図6‒5 DECIMALのデータ形式

    [図データ]

  • 定数は,123.412.345という形式で記述します。定数については,「6.3 定数」を参照してください。

DOUBLE PRECISIONFLOAT
  • 値の範囲は,約-1.7×10308〜-2.3×10-308,0,および約2.3×10-308〜1.7×10308の倍精度浮動小数点数を扱うデータ型です。

    なお,値の範囲は,ハードウェア表現に依存します。

  • データ型を指定する際の記述形式を次に示します。

    • DOUBLE PRECISION型の場合

      DOUBLEまたはDOUBLE PRECISION

    • FLOAT型の場合

      FLOAT

    重要

    データ型にFLOAT型が指定された場合,HADBはデータ型にDOUBLE PRECISION型が指定されたと見なします。

  • データは,8バイトの浮動小数点数データです。

  • 定数は,1.0e2-3.4E-1のように,仮数を整数定数または10進定数で表し,指数を3桁以下の整数で記述します。定数については,「6.3 定数」を参照してください。

  • NaN(非数),および無限大となる値を扱うことはできません。

  • -0+0に変換されます。

  • 非正規化数は+0に変換されます。

  • 浮動小数点データの丸めが発生する場合は,最近接偶数への丸めが適用されます。

(2) 文字データ

CHARACTER
  • 固定長文字列を扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    CHAR,CHAR(n),CHARACTER,またはCHARACTER(n)

  • 文字列の長さ(バイト数)をnで指定します。nは1〜32,000の整数で,nを省略すると1が仮定されます。

  • 定数は,'char''Char''charChar'という形式で記述します。定数については,「6.3 定数」を参照してください。

  • 半角文字,全角文字の両方を扱うことができます。

  • 文字データの比較を行う場合,文字コードの大小が比較するデータの大小となります。

VARCHAR
  • 可変長文字列を扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    VARCHAR(n)

  • 文字列の最大長(バイト数)をnで指定します。nは1〜64,000の整数でなければなりません。nは省略できません。

  • VARCHAR型のデータ形式を次の図に示します。

    図6‒6 VARCHAR型のデータ形式

    [図データ]

    文字データの長さ(L)を4バイトで表します。

  • 半角文字,全角文字の両方を扱うことができます。また,文字列の長さが0バイトのデータを扱うこともできます。

  • 文字データの比較を行う場合,文字コードの大小が比較するデータの大小となります。

  • 次に示す個所に,データ長が32,000バイトを超えるVARCHAR型は指定できません。

    • ALTER TABLE文の列定義に指定するデータ型

    • CREATE TABLE文の列定義に指定するデータ型

    • 表関数列リストに指定するデータ型

    • スカラ関数CASTに指定する変換後のデータ型

    • スカラ関数CONVERTに指定する変換後のデータ型

(3) 日時データ

DATE
  • 年,月,日の情報を持つ日付のデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    DATE

  • 値の範囲が,0001年1月1日〜9999年12月31日の日付を扱います。

  • データ長は4バイトになります。入力するデータ長は,この長さである必要があります。

  • DATE型のデータ形式を次の図に示します。

    図6‒7 DATE型のデータ形式

    [図データ]

  • 定数は,DATE'2012-03-30'またはDATE'2012/03/30'という形式で記述します。定数については,「6.3 定数」を参照してください。

TIME
  • 時,分,秒の情報を持つ時刻のデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    TIME(p),またはTIME

    小数秒精度(小数秒の桁数)をpで指定します。pに指定できる値は,0369,または12です。

    TIMEと指定した場合は,p0が仮定されます。

  • 値の範囲が,0時0分0.000000000000秒〜23時59分59.999999999999秒の時刻を扱います。

  • データ長は,3+↑p÷2↑バイトになります。入力するデータ長は,この長さである必要があります。

  • TIME型のデータ形式を次の図に示します。

    図6‒8 TIME型のデータ形式

    [図データ]

    4ビットで1桁を表します。小数秒精度が奇数の場合は,末尾の4ビットに0が格納されます。

  • 定数は,TIME'11:03:58.123456'という形式で記述します。定数については,「6.3 定数」を参照してください。

TIMESTAMP
  • 年,月,日,時,分,秒の情報を持つ時刻印のデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    TIMESTAMP(p),またはTIMESTAMP

    小数秒精度(小数秒の桁数)をpで指定します。pに指定できる値は,0369,または12です。

    TIMESTAMPと指定した場合は,p0が仮定されます。

  • 値の範囲が,0001年1月1日0時0分0.000000000000秒〜9999年12月31日23時59分59.999999999999秒の時刻印を扱います。

  • データ長は,7+↑p÷2↑バイトになります。入力するデータ長は,この長さである必要があります。

  • TIMESTAMP型のデータ形式を次の図に示します。

    図6‒9 TIMESTAMP型のデータ形式

    [図データ]

    4ビットで1桁を表します。小数秒精度が奇数の場合は,末尾の4ビットに0が格納されます。

  • 定数は,TIMESTAMP'2012-03-30 11:03:58.123456',またはTIMESTAMP'2012/03/30 11:03:58.123456'という形式で記述します。定数については,「6.3 定数」を参照してください。

(4) バイナリデータ

BINARY
  • 固定長バイナリデータを扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    BINARY(n),またはBINARY

  • バイナリデータの長さ(バイト数)をnで指定します。nは1〜32,000の整数で,nを省略すると1が仮定されます。

  • 定数は,X'0A38ef92'という形式で記述します。定数については,「6.3 定数」を参照してください。

  • BINARY型のデータ形式を次の図に示します。

    図6‒10 BINARY型のデータ形式

    [図データ]

VARBINARY
  • 可変長バイナリデータを扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    VARBINARY(n)

  • バイナリデータの最大長(バイト数)をnで指定します。nは1〜32,000の整数でなければなりません。nは省略できません。

  • 定数は,X'0A38ef92'という形式で記述します。定数については,「6.3 定数」を参照してください。

  • バイナリデータの長さが0バイトのデータを扱うこともできます。

  • VARBINARY型のデータ形式を次の図に示します。

    図6‒11 VARBINARY型のデータ形式

    [図データ]

    バイナリデータの長さ(L)を2バイトで表します。

(5) 配列データ

ARRAY(配列型)
  • 配列型は,順序付けられた一連のデータを要素とする一次元の配列データを扱うデータ型です。

  • データ型を指定する際の記述形式を次に示します。

    要素データ型 ARRAY[最大要素数]

    要素データ型

    配列要素のデータ型を指定します。

    要素データ型には,数データ,文字データ,日時データ,またはバイナリデータのどれかのデータ型を指定してください。要素データ型の記述形式は,各データ型の記述形式の規則に従います。

    最大要素数

    配列要素の最大数を指定します。

    最大要素数には,2~30,000の符号なし整数定数を指定してください。

    <指定例>

    • 要素データ型がCHAR(5)で,最大要素数が20の場合

      CHAR(5) ARRAY[20]
    • 要素データ型がINTEGERで,最大要素数が5の場合

      INTEGER ARRAY[5]
  • 配列データの各要素を,配列要素といいます。各配列要素には,要素番号が割り当てられます。先頭の配列要素の要素番号を1とし,順に2,3,…となる符号なし整数定数の要素番号が各配列要素に割り当てられます。

  • 配列要素数が0の配列データを,空の配列データといいます。

  • 配列型の列を定義する際の考慮点については,マニュアルHADB システム構築・運用ガイド配列型の列の定義【カラムストア表】を参照してください。