3.1.3 抽出したデータのデータ型変換

データを反映するときに変換できるデータ型,および抽出する行を選択するときに比較できるデータ型について説明します。

HiRDB Dataextractorで変換および比較できるデータ型を,「表3-7 HiRDB Dataextractorで変換および比較できるデータ型」に示します。

データを反映するとき,HiRDB Dataextractorは抽出対象の列と反映対象の列とを比較し,「表3-7 HiRDB Dataextractorで変換および比較できるデータ型」に示すデータ型の組み合わせであればデータ型を変換します。

また抽出する行を選択する場合,表式記述ファイルの条件の指定が「表3-7 HiRDB Dataextractorで変換および比較できるデータ型」に示すデータ型の組み合わせであれば,HiRDB Dataextractorは指定されたデータを比較します。

注意事項
  • データ型変換中のオーバフローエラー
    データ型変換中にオーバフローエラーが発生した場合,HiRDBシステム共通定義のpd_overflow_suppressの設定によって,次の処理が行われます。
  • オーバフローエラー抑止が設定されている場合
    オーバフローが発生した演算の結果をナル値として処理します。
  • オーバフローエラー抑止が設定されていない場合
    エラーメッセージを出力して処理を終了します。

    表3-7 HiRDB Dataextractorで変換および比較できるデータ型

    抽出側のデータ型反映側のデータ型
    文字,混在文字
    ※14
    各国文字
    ※14
    日付時刻日間隔時間隔時刻印長大
    ※15
    ※20
    抽象
    SXF
    INT×××××※1×※6×××××
    SMALLINT
    DEC※14
    FLOAT
    SMALLFLT
    文字※14CHAR×※11※21※13×※2×※7×××※17×※19×××
    VARCHAR
    混在文字※14MCHAR×※11※13××××××※19×××
    MVARCHAR
    各国文字※14NCHAR×※12※11×××××××××
    NVARCHAR
    日付DATE××※3×××××××××
    時刻TIME××※8×××××××××
    日間隔YEAR×※4××××※5××××××
    時間隔HOUR×※9×××××※10×××××
    時刻印TIMESTAMP××※16×××××※18××××
    長大※15,※20BLOB×××××××××××
    BINARY
    抽象SGMLTEXT×××××××××××
    XML×××××××××××
    FREEWORD×××××××××××
(凡例)
○:変換,比較できます。
×:変換,比較できません。
YEAR:INTERVAL YEAR TO DAY
HOUR:INTERVAL HOUR TO SECOND
S:SGMLTEXT
X:XML
F:FREEWORD
注※1
次に示すものは日間隔データとの比較および日間隔データへの変換ができます。
  • 日間隔を10進数で表現した定数との比較
  • DECIMAL(8,0)データとの比較および変換
注※2
次に示すものは日付データとの比較ができます。
  • 日付を文字で表現した定数との比較
  • CHARACTER(10)データとの比較
注※3
次に示すものは日付データとの比較および文字データへの変換ができます。
  • 日付を文字で表現した定数との比較
  • CHARACTER(10)データとの比較
  • 日付データを10バイト以上のCHARACTERまたはVARCHARデータへ変換
注※4
次に示すものは日間隔データとの比較および10進データへの変換ができます。
  • 日間隔を10進数で表現した定数との比較
  • DECIMAL(8,0)データとの比較
  • 日間隔データをDECIMAL(8,0)データへの変換
注※5
日間隔データ同士の比較は,年,月,日の順で比較します。
注※6
次に示すものは時間隔データとの比較および時間隔データへの変換ができます。
  • 時間隔を10進数で表現した定数との比較
  • DECIMAL(6,0)に対応するデータとの比較および変換
注※7
次に示すものは時刻データとの比較ができます。
  • 時刻を文字で表現した定数
  • CHARACTER(8)データとの比較
注※8
次に示すものは時刻データとの比較および文字データへの変換ができます。
  • 時刻を文字で表現した定数との比較
  • CHARACTER(8) データとの比較
  • 時刻データを8バイト以上のCHARACTERまたはVARCHARデータへの変換
注※9
次に示すものは時間隔データとの比較および10進データへの変換ができます。
  • 時間隔を10進数で表現した定数との比較
  • DECIMAL(6,0)データとの比較
  • 時間隔データをDECIMAL(6,0)データへの変換
注※10
時間隔データ同士の比較は,時,分,秒の順で比較します。
注※11
抽出側のデータ長<反映側のデータ長の変換のときは後ろの部分に空白を設定します。
注※12
この組み合わせで実行する場合の注意を次に示します。
  • 2×抽出側の文字数≦反映側のデータ長である必要があります。
  • 抽出側のデータ長<反映側データ長の場合,1バイトの空白を設定します。
  • 抽出側のデータ内容を,そのまま反映側に格納します。
  • N(VAR)CHARの空白と,1バイトの空白が混在するような使い方をした場合,空白を含む比較などが意図したように実行できなくなるので注意してください。
注※13
この組み合わせで実行する場合の注意を次に示します。
  • 抽出側のデータ長≦2×反映側の文字数である必要があります。
  • N(VAR)CHARで定義した列中に1バイトコードを代入しないでください。代入した場合,データ検索などが意図したように実行できなくなるので注意してください。
  • 抽出側のデータ長<反映側のデータ長の場合,1バイトの空白を設定します。
  • 抽出側のデータ内容を,そのまま反映側に格納します。
注※14
次の場合は,データの切り捨てが発生するため注意してください。
ただし,環境変数XTERRLEVELに0以外を指定した場合は,指定に従って処理されます。
  • 文字データ,混在文字データ,各国文字データの場合
    抽出側のデータ長>反映側のデータ長
  • DECの場合
    抽出側の整数部のけた数>反映側の整数部のけた数,または
    抽出側の少数部のけた数>反映側の少数部のけた数
注※15
次の場合は,データの変換,比較はできません。
ただし,環境変数XTLOBBUFSIZEが指定された場合は,環境変数XTERRLEVELの指定に従って処理されます。
抽出側のデータ長>反映側のデータ長
注※16
次の場合は,時刻印データから文字データ(CHAR(n),VARCHAR(n))への変換ができます。
  • 時刻印データの小数秒が0けたのとき,文字データ長≧19バイト
  • 時刻印データの小数秒が2けたのとき,文字データ長≧22バイト
  • 時刻印データの小数秒が4けたのとき,文字データ長≧24バイト
  • 時刻印データの小数秒が6けたのとき,文字データ長≧26バイト
注※17
次の場合は,文字データ(CHAR(n),VARCHAR(n))から時刻印データへの変換ができます。
  • CHARACTERまたはVARCHARが時刻印データである。
  • 列名記述ファイルでスカラ関数TIMESTAMP_FORMATを指定する。また,小数秒は反映側が短ければ切り捨てを行い,長ければ0x00を埋める。
注※18
小数秒けた数が不一致の場合,反映側が短ければ切り捨て,長ければ0x00を埋めます。
注※19
次の場合は変換ができます。
  • 文字データまたは混在文字データからBINARYデータへ変換する。
  • 16進定数を列名記述ファイルに指定し,BINARYデータに反映する。
注※20
長大データのBLOB型以外は使用できます。
注※21
反映側がCHAR,VARCHARの場合,環境変数XTCSETUSEにyesを指定して文字集合列を抽出・反映するときは,文字集合データをそのままのデータ型で抽出し,反映します。