4.2.4  DB2のデータ型との対応関係

外部サーバがDB2の場合,マッピング時のデータ型の対応関係を,表4-9および表4-10に示します。

表4-9 データ型の対応関係(外部サーバがDB2の場合)(1/2)

DB2のデータ型
(外部のDB)
 
HiRDBのデータ型
SMALLINTINTEGERDECIMAL(m,n)
1≦m≦29,0≦n≦m
SMALLFLTまたはREAL※1FLOATまたはDOUBLE PRECISION※1CHAR(n)
1≦n≦255
VARCHAR(n)
1≦n≦255
MCHAR(n)
1≦n≦255
MVARCHAR(n)
1≦n≦255
SMALLINT※2※3※11    
INTEGER※2※4※11    
DECIMAL(p,s)
p:精度
s:位取り
1≦p≦29※5※6※11※12    
30≦p≦31  ※7※11    
REALまたは
FLOAT(n)※1
1≦n≦21
※11    
DOUBLEまたは
FLOAT(n)※1
22≦n≦53
※11    
CHAR(n)
1≦n≦255
     ※8※13 ※10※13 
CHAR(n)
256≦n
         
VARCHAR(n)
1≦n≦255
      ※8※13 ※10※13
VARCHAR(n)
256≦n≦32,000
         
VARCHAR(n)
32,001≦n
         
GRAPHIC(n)
1≦n≦127
         
GRAPHIC(n)
128≦n
         
VARGRAPHIC(n)
1≦n≦127
         
VARGRAPHIC(n)
128≦n≦16,000
         
VARGRAPHIC(n)
16,001≦n
         
DATE         
TIME         
TIMESTAMP     ※9※13   
BLOB         
CLOB         
DBLOB         
ROWID         
(凡例)
◎:推奨するデータ型です。
○:マッピングできるデータ型です。
△:DESCRIBE文を実行する場合,マッピングできるデータ型となります。
空白:マッピングできないデータ型です。
注1
外部サーバ上の256バイト以上の列に対して,255バイトの文字列型を定義した場合,255バイトまでのデータしか取得できません。
注2
2バイト文字を含む文字列のコード変換後のバイト数が,DB2で扱える最大バイト数を超えた場合はDB2でエラーとなります。
注※1
表現できる値の精度が落ちる場合があります。HiRDBでの値の範囲および精度は,ハードウェアに依存します。
注※2
-32,768~32,767の範囲に限ります。
注※3
DECIMAL(5)としてください。-32,768~32,767の範囲に限ります。
注※4
DECIMAL(10)としてください。-2,147,483,648~2,147,483,647の範囲に限ります。
注※5
1≦p≦4,s=0の場合に使用できます。
注※6
1≦p≦9,s=0の場合に使用できます。
注※7
p-s≦29の場合,DECIMAL(p-s,0)にマッピングできます。ただし,小数点以下は切り捨てられます。
注※8
データに全角文字を含まない場合,推奨するデータ型となります。
注※9
CHAR(n)(nは19,または21~26)にマッピングしてください。日付,日時の文字列の形式は,nが19の場合は'YYYY-MM-DD hh:mm:ss',nが21~26の場合は'YYYY-MM-DD hh:mm:ss.xxx'(xは21のときは1けた,26のときは6けた)となります。また,該当する列に対して比較や演算をした場合,外部のDBでエラーとなったり,意図した結果にならなかったりすることがあります。
注※10
データに全角文字を含む場合,推奨するデータ型となります。
注※11
整数部のけた数がHiRDBのデータ型より小さい場合,エラーとなります。
小数部のけた数がHiRDBのデータ型より小さい場合,HiRDBのデータ型の小数部のけた数に合わせて残りの小数部を切り捨てて取得します。
それ以外の場合,整数部または小数部のけた数がHiRDBのデータ型より大きいときは,HiRDBのデータ型のけた数に合わせて拡張した部分に,0を補って取得します。
注※12
pおよびsを省略して定義している場合,外部サーバによって省略時の精度および位取りの仮定値が異なります。そのため,外部サーバでの精度(p)および位取り(s)を,それぞれ外部表定義での精度(m)および位取り(n)と一致させる必要があります。
省略時以外は,DECIMAL(m,n)をDECIMAL(p,s)としてください。
注※13
指定がない場合は,外部サーバとHiRDBのデータ型の定義長を同じにしてください。
HiRDBのデータ型の定義長(長さnバイト:n≦255)が外部サーバのデータ型の実長よりも短い場合,先頭のnバイトだけを取得します。
また,長い場合,HiRDBが固定長のデータ型のときは左詰めに挿入され,余りの部分に空白(各国文字列の場合は全角空白,文字列または混在文字列の場合は半角空白)を設定して取得します。
HiRDBが可変長のデータ型の場合,そのまま取得します。

 

表4-10 データ型の対応関係(外部サーバがDB2の場合)(2/2)

DB2のデータ型
(外部のDB)
 
HiRDBのデータ型
NCHAR(n)
1≦n≦127
NVARCHAR(n)
1≦n≦127
DATETIMETIMESTAMP(p)
p=0,2,4,または6
INTERVAL YEAR TO DAYINTERVAL HOUR TO SECONDBINARY(n)
1≦n≦255
SMALLINT        
INTEGER        
DECIMAL(p,s)
p:精度
s:位取り
1≦p≦29        
30≦p≦31        
REALまたは
FLOAT(n)※1
1≦n≦21
        
DOUBLEまたは
FLOAT(n)※1
22≦n≦53
        
CHAR(n)
1≦n≦255
        
CHAR(n)
256≦n
        
VARCHAR(n)
1≦n≦255
        
VARCHAR(n)
256≦n≦32,000
        
VARCHAR(n)
32,001≦n
        
GRAPHIC(n)
1≦n≦127
※3※5       
GRAPHIC(n)
128≦n
        
VARGRAPHIC(n)
1≦n≦127
 ※3※5      
VARGRAPHIC(n)
128≦n≦16,000
        
VARGRAPHIC(n)
16,001≦n
        
DATE       
TIME   ※2    
TIMESTAMP    ※1※4   
BLOB        
CLOB        
DBLOB        
ROWID        
(凡例)
◎:推奨するデータ型です。
空白:マッピングできないデータ型です。
注1
外部サーバ上の256バイト以上の列に対して,255バイトの文字列型を定義した場合,255バイトまでのデータしか取得できません。
注2
2バイト文字を含む文字列のコード変換後のバイト数が,DB2で扱える最大バイト数を超えた場合はDB2でエラーとなります。
注※1
TIMESTAMP型にマッピングする場合は,精度pに6を指定してください。
注※2
24時は0時となります。
注※3
GRAPHIC型は127文字(254バイト)まで定義できますが,GRAPHIC型定数は124文字(248バイト)までしか指定できません。125文字以上(249バイト以上)指定する場合は,連結演算を使用してください。
注※4
24時は,翌日の0時となります。ただし,'9999-12-31-24.00.00.000000'の場合はエラーとなります。
注※5
指定がない場合は,外部サーバとHiRDBのデータ型の定義長を同じにしてください。
HiRDBのデータ型の定義長(長さnバイト:n≦255)が外部サーバのデータ型の実長よりも短い場合,先頭のnバイトだけを取得します。
また,長い場合,HiRDBが固定長のデータ型のときは左詰めに挿入され,余りの部分に空白(各国文字列の場合は全角空白,文字列または混在文字列の場合は半角空白)を設定して取得します。
HiRDBが可変長のデータ型の場合,そのまま取得します。