6.2.1 データ型の種類
データ型の種類を次の表に示します。
項番 |
分類 |
データ型 |
データ型コード※1 |
データ格納長 (単位:バイト) |
データ形式 |
|
---|---|---|---|---|---|---|
10進 |
16進 |
|||||
1 |
数データ |
INTEGER |
241 |
F1 |
8 |
整数(8バイト) |
2 |
BIGINT |
|||||
3 |
SMALLINT |
245 |
F5 |
4 |
整数(4バイト) |
|
4 |
DECIMAL(m,n) |
229 |
E5 |
|
固定小数点数 |
|
5 |
NUMERIC(m,n) |
|||||
6 |
DOUBLE PRECISION |
225 |
E1 |
8 |
倍精度浮動小数点数 |
|
7 |
FLOAT |
|||||
8 |
文字データ |
CHARACTER(n) |
197 |
C5 |
n |
固定長文字列 |
9 |
VARCHAR(n) |
193 |
C1 |
n+2 |
可変長文字列 |
|
10 |
日時データ |
DATE |
113 |
71 |
4 |
年,月,日の情報を持つ日付のデータ型 |
11 |
TIME(p) |
121 |
79 |
3+↑p÷2↑ |
時,分,秒の情報を持つ時刻のデータ型 |
|
12 |
TIMESTAMP(p) |
125 |
7D |
7+↑p÷2↑ |
年,月,日,時,分,秒の情報を持つ時刻印のデータ型 |
|
13 |
バイナリデータ |
BINARY(n) |
149 |
95 |
n |
固定長バイナリデータ |
14 |
VARBINARY(n) |
145 |
91 |
n+2 |
可変長バイナリデータ |
|
15 |
配列データ |
ARRAY |
なし |
なし |
要素データ型に従う |
順序付けられた一連のデータを要素とする一次元の配列データ |
16 |
行データ |
ROW |
69 |
45 |
行長※2 |
行インタフェースで使用するデータ型 |
- 注※1
-
検索結果列のデータ型を表すコードです。
データ型コードは,CLI関数使用時にa_rdb_SQLDataType_t構造体に格納されます。
- 注※2
-
各列のデータ格納長の合計が行長になります。
- 〈この項の構成〉
(1) 数データ
- ■INTEGER,BIGINT
-
-
値の範囲が-9,223,372,036,854,775,808〜9,223,372,036,854,775,807の整数を扱うデータ型です。
-
データ型を指定する際の記述形式を次に示します。
-
INTEGER型の場合
INTまたはINTEGER
-
BIGINT型の場合
BIGINT
- 重要
-
データ型にBIGINT型が指定された場合,HADBはデータ型にINTEGER型が指定されたと見なします。
-
-
データは,8バイトの2進形式です。
-
定数は,100,200という形式で記述します。定数については,「6.3 定数」を参照してください。
-
- ■SMALLINT
-
-
値の範囲が-2,147,483,648〜2,147,483,647の整数を扱うデータ型です。
-
データ型を指定する際の記述形式を次に示します。
SMALLINT
-
データは,4バイトの2進形式です。
-
SMALLINT型を使用すると,INTEGER型またはBIGINT型を使用するよりも,データベースの容量を少なくできます。
-
- ■DECIMAL,NUMERIC
-
-
固定小数点数を扱うデータ型です。
-
データ型を指定する際の記述形式を次に示します。
-
DECIMAL型の場合
DEC〔(m〔,n〕)〕またはDECIMAL〔(m〔,n〕)〕
-
NUMERIC型の場合
NUMERIC〔(m〔,n〕)〕
- 重要
-
データ型にNUMERIC型が指定された場合,HADBはデータ型にDECIMAL型が指定されたと見なします。
-
-
精度(全体の桁数)をm,位取り(小数部の桁数)をnで指定します。
-
m,nは正整数で,1≦m≦38,0≦n≦38,n≦mです。
-
mを省略すると38が仮定され,nを省略すると0が仮定されます。
-
データは2進形式で,位取りに合わせた値が格納されます。
-
負の値は2の補数で表します。
-
データは,次の図に示すように精度によって2〜16バイトの整数データとして格納されます。
図6‒5 DECIMAL型のデータ形式 -
定数は,123.4,12.345という形式で記述します。定数については,「6.3 定数」を参照してください。
-
- ■DOUBLE PRECISION,FLOAT
-
-
値の範囲は,約-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に指定できる値は,0,3,6,9,または12です。
TIMEと指定した場合は,pに0が仮定されます。
-
値の範囲が,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に指定できる値は,0,3,6,9,または12です。
TIMESTAMPと指定した場合は,pに0が仮定されます。
-
値の範囲が,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 システム構築・運用ガイドの配列型の列の定義【カラムストア表】を参照してください。
-