スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)

[目次][索引][前へ][次へ]

5.5.3 固定長データ形式の場合

固定長データ形式の場合,入力データは文字,又はデータベースに格納される形で記述します。

抽象データ型に格納するデータをコンストラクタ関数で生成する場合は,入力パラメタを文字データ,又は関数の引数の型で記述します。

なお,文字列形式の数値データ,及び文字列形式の文字データとは,それぞれ次の表に示すデータ型の列に格納する文字列データのことです。

表5-30 文字列形式の数値データと文字列形式の文字データ

文字列形式の数値データ 文字列形式の文字データ

  • INTEGER
  • SMALLINT
  • DECIMAL
  • FLOAT
  • SMALLFLT
  • DATE
  • INTERVAL YEAR TO DAY
  • TIME
  • INTERVAL HOUR TO SECOND
  • TIMESTAMP

  • CHAR
  • VARCHAR
  • MCHAR
  • MVARCHAR
  • NCHAR
  • NVARCHAR
<この項の構成>
(1) 記述形式
(2) 規則
(3) 固定長データ形式固有の入力データ型
(4) 記述例

(1) 記述形式

入力データを文字で記述する場合は,「5.5.1 DAT形式の場合」を参照してください。データベースに格納される形で記述する場合は,「5.5.2 バイナリ形式の場合」を参照してください。

(2) 規則

(凡例)−:該当しません。
 

表5-32 入力データを文字列形式で記述した場合の格納データ(固定長データ形式)

表の列のデータ型,又はコンストラクタ関数のパラメタのデータ型 列名文及びoption文の指定内容 入力データファイルの記述データ 格納データ
INTEGER,SMALLINT,DECIMAL,FLOAT,及びSMALLFLT type=char(3) 1△△ 各データ型の1
△△1
△1△
+△1 入力データエラー
1△1
type=char(3) option文allspaceオペランドの指定あり △△△ 各データ型の「0」
option文allspaceオペランドの指定なし △△△ 入力データエラー
CHAR(7)及びMCHAR(7) type=char(7)又はtype=char(7),mode=text ABC△△△△ ABC△△△△
"ABC"△△
"ABC△△"
""ABC"" "ABC"△△
△△△△△△△ △△△△△△△
""△△△△△
△"△A△"△ △"△A△"△
type=char(7),mode=bin ABC△△△△ ABC△△△△
"ABC"△△ "ABC"△△
"ABC△△" "ABC△△"
""ABC"" ""ABC""
△△△△△△△ △△△△△△△
""△△△△△ ""△△△△△
△"△A△"△ △"△A△"△
NCHAR(3) type=char(6) あ▲▲ あ▲▲
"あ"▲ "あ"▲
"あ▲" あ▲▲
""あ"" "あ"▲
▲▲▲ ▲▲▲
""▲▲ ""▲▲
VARCHAR(7)及びMVARCHAR(7) type=char(7)又はtype=char(7),enclose_del=yes ABC△△△△ ABC(3バイト)
"ABC"△△
"ABC△△" ABC△△(5バイト)
""ABC"" "ABC"(5バイト)
△△△△△△△ △(1バイト)
""△△△△△ (0バイト)
△"△A△"△ △"△A△"
type=char(7),enclose_del=no ABC△△△△ ABC(3バイト)
"ABC"△△ "ABC"(5バイト)
"ABC△△" "ABC△△"(7バイト)
""ABC"" ""ABC""(7バイト)
△△△△△△△ △(1バイト)
""△△△△△ ""(2バイト)
△"△A△"△ △"△A△"△
NVARCHAR(3) type=char(6) あ▲▲ あ▲▲(6バイト)
"あ"▲ "あ"▲(6バイト)
"あ▲" あ▲(4バイト)
""あ"" "あ"(4バイト)
▲▲▲ ▲▲▲(6バイト)
""▲▲ ""▲▲(6バイト)
DATE type=char(12) 2003-12-31△△ 2003-12-31
△△2003-12-31
△2003-12-31△
INTERVAL YEAR TO DAY type=char(11) 00010101.△△ +00010101.
△△00010101.
△00010101.△
TIME type=char(10) 08:45:00△△ 08:45:00
△△08:45:00
△08:45:00△
INTERVAL HOUR TO SECOND type=char(9) 010101.△△ +010101.
△△010101.
△010101.△
TIMESTAMP type=char(21) 1991-01-01_11:22:33△△ 1991-01-01_11:22:33
△△1991-01-01_11:22:33
△1991-01-01_11:22:33△
BLOB type=char(13) /tmp/file01△△ /tmp/file01のデータ
△△/tmp/file01 エラー
△/tmp/file01△
BINARY(7) type=char(7) △△△△△△△ △△△△△△△

(凡例)
△:半角の空白(0x20)
▲:全角の空白

(3) 固定長データ形式固有の入力データ型

固定長データ形式の入力データファイルは,表の列データ型と同じデータ形式,又は列データ型にデータ変換可能な文字列で作成しますが,DECIMAL型の列に格納する入力データ型として,ADEC(ASCII CODE DECIMAL)型とBDEC(BINARY DECIMAL)型を使用できます。

(a) ADEC型(ASCII CODE DECIMAL)

ADEC型は,文字列形式で数値データを記述します。データ中には小数点を持たないで,列構成情報ファイルで小数点の位置を指定するデータ型です。ADEC型の形式を次に示します。

[図データ]

<規則>
  • 使用できる文字を次に示します。
    +,−,空白(0x20),タブ(0x09),ナル文字(0x00),0〜9
    ただし,データ中に1バイト以上の空白,タブ,又はナル文字を含むと,小数点を持たない整数値と解釈します。そのため,typeオペランドで指定した精度と位取りで小数点位置を解釈するデータを作成する場合は,「0」でパディングする必要があります。
  • 符号(+又は−)だけの入力データは,入力データエラーとなります。
  • option文のallspaceオペランド指定ありの場合だけ,空白だけの入力データを許可します。この場合,0が格納されます。allspaceオペランド指定なしの場合は入力データエラーとなります。
  • 入力データ中には小数点は記述しません。列構成情報ファイルのtypeオペランドで精度と位取りを指定します。精度(m)と位取り(n)の関係を次に示します。
    1≦m≦38  0≦n≦38  m≧n
  • 入力データに符号(+又は−)を持つ場合,精度(m)には符号部1バイトを含めたけた数を指定します。
  • typeオペランドで指定した精度と位取りは,格納する列のDECIMAL型にデータ変換可能(けた落ちが発生しない)値を指定します。データ変換不可の場合,制御文エラーとなります。

<データの格納例>
次の場合のデータの格納例を次の表に示します。
  • 格納する表の列定義:DECIMAL(10,4)
  • 入力データ:ADEC型
  • 列構成情報ファイルの指定:type=adec(10,4)

    表5-33 ADEC型で記述したデータをDECIMAL(10,4)に格納した場合の例

    入力データファイルに記述したデータ DECIMAL(10,4)に格納するデータ 説明
    1△△△△△△△△△ +000001.0000 1バイトでも空白を含むと,typeオペランドに指定した精度と位取りは無視され,小数点がない値と解釈します。
    △△△△△△△△△1 +000001.0000
    △△△△△1△△△△ +000001.0000
    △△△△△10000 +010000.0000
    000001△△△△ +000001.0000
    1000000000 +100000.0000 0〜9だけの場合,typeオペランドに指定した精度と位取りで小数点の位置を決定します。
    0000000001 +000000.0001
    0000010000 +000001.0000
    +000010000 +000001.0000 0〜9の値と符号部の場合,小数点の位置はデータの後方から解釈します。
    -000010000 -000001.0000
(凡例)
△:空白(0x20)
(b) BDEC型(BINARY DECIMAL)

BDEC型は,2進数で記述されたバイナリデータを10進数で記述し,10進数のけた数に合わせて,表の列データ型から小数点の位置を決定するデータ型です。BDEC型は先頭1ビットを符号として扱います。形式を次に示します。

[図データ]

<規則>
  • 列構成情報ファイルのtypeオペランドでバイナリデータの長さを指定します。
  • BDEC型のけた数(m)を次に示します。
    32ビットモードの場合:1〜4バイト
    64ビットモードの場合:1〜8バイト
  • BDEC型に実際に指定できる値を次に示します。
    32ビットモードの場合:-2147483648〜2147483647
    64ビットモードの場合:-9223372036854775808〜9223372036854775807
  • DECIMAL列に実際に格納できる値を次に示します。
    32ビットモードの場合:精度は10けたまで
    64ビットモードの場合:精度は19けたまで

<データの格納例>
次の場合のデータの格納例を次の表に示します。
  • 入力データ:4バイトの2進数
  • 列構成情報ファイルの指定:type=bdec(4)

    表5-34 BDEC型で記述したデータをDECIMAL列に格納した場合の例

    入力データファイルに記述したデータ 格納先の列定義 格納するデータ
    0xff 0xff 0xfc 0xf7 DECIMAL(10,0) -0000000777
    DECIMAL(10,2) -00000007.77
    DECIMAL(10,10) -0.0000000777
このように,同じ値でも格納先のDECIMAL列の精度と位取りによって,格納するデータが異なります。

(4) 記述例

固定長データ形式のデータ記述例を次の図に示します。

図5-17 固定長データ形式のデータ記述例

[図データ]