1.2.1 データ型

データ型は次の二つに分けられます。

 

形式

データ型::={既定義型|ユーザ定義型}

説明
<この項の構成>
(1) 既定義型
(2) ユーザ定義型

(1) 既定義型

既定義型を次の表に示します。

表1-3 既定義型

分 類データ型※1データ形式説 明
数データINT〔EGER〕整数
(4バイトの2進形式)
値の範囲が-2147483648​~2147483647​の整数です。
SMALLINT整数
(2バイトの2進形式)
値の範囲が-32768~32767の整数です。
〔LARGE〕
DEC〔IMAL〕
〔(m〔,n〕)〕
又は
NUMERIC
〔(m〔,n〕)〕
固定小数点数
(↑(m+1)/2↑バイトのパック10進形式)※8
精度(全体のけた数)がmけたで,位取り(小数点以下のけた数)がnけたの固定小数点数です。
m,nは正整数で,1≦m≦38,0≦n≦38,n≦mです。
mを省略すると,15が仮定されます。
nを省略すると,0が仮定されます。
FLOAT又は
DOUBLE PRECISION
倍精度浮動小数点数
(8バイト)
値の範囲が約±4.9×10-324~±1.7×10308の倍精度浮動小数点数です。※4
SMALLFLT又は
REAL
単精度浮動小数点数
(4バイト)
値の範囲が約±1.4×10-45~±3.4×1038の単精度浮動小数点数です。※4
文字データ10CHAR〔ACTER〕
〔(n)〕〔CHARACTER SET 文字集合指定〕
固定長文字列
(長さnバイト)
  • 文字集合指定なしの場合
    長さがnバイトの半角文字から成る固定長文字列です。
  • 文字集合指定ありの場合
    長さがnバイトの文字集合の文字から成る固定長文字列です。
nは正整数で1≦n≦30,000です。nを省略すると,1が仮定されます。
文字集合指定は文字データに対する属性を指定します。詳細は「1.3 文字集合」を参照してください。
VARCHAR(n) 〔CHARACTER SET 文字集合指定〕又は
CHAR〔ACTER〕VARYING(n) 〔CHARACTER SET 文字集合指定〕
可変長文字列
(最大長nバイト)
  • 文字集合指定なしの場合
    最大長がnバイトの半角文字から成る可変長文字列です。
  • 文字集合指定ありの場合
    長さがnバイトの文字集合の文字から成る可変長文字列です。
nは正整数で1≦n≦32,000です。実長は0以上です。
文字集合指定は文字データに対する属性を指定します。詳細は「1.3 文字集合」を参照してください。
各国文字データ※6※9NCHAR〔(n)〕又は
NATIONAL CHAR〔ACTER〕〔(n)〕
固定長各国文字列
(長さn文字)
長さn文字(2nバイト)の全角文字から成る固定長各国文字列です。
nは正整数で1≦n≦15,000です。nを省略すると,1が仮定されます。
NVARCHAR(n)又は
NATIONAL CHAR〔ACTER〕VARYING(n)又は
NCHAR VARYING(n)
可変長各国文字列
(最大長n文字)
最大長がn文字(2nバイト)の全角文字から成る可変長各国文字列です。
nは正整数で1≦n≦16,000です。実長は0以上です。
混在文字データ※6MCHAR〔(n)〕固定長混在文字列
(長さnバイト)
長さnバイトの半角文字と全角文字の混在する固定長混在文字列です。
nは正整数で1≦n≦30,000です。nを省略すると,1が仮定されます。
MVARCHAR(n)可変長混在文字列
(最大長nバイト)
最大長nバイトの半角文字と全角文字の混在する可変長混在文字列です。
nは正整数で1≦n≦32,000です。実長は0以上です。
日付データDATE日付
(4バイト符号なしパック形式YYYYMMDD)
YYYY:0001~9999(年)
MM:01~12(月)
DD:01~該当年月の最終日(日)
年,月,日の三つの領域を持つ日付のデータ型です。
時刻データTIME時刻
(3バイト符号なしパック形式hhmmss)
hh:00~23(時)
mm:00~59(分)
ss:00~59(秒)11
時,分,秒の三つの領域を持つ時刻のデータ型です。
時刻印データTIMESTAMP〔(p)〕時刻印
(7~10バイトの符号なしパック形式YYYYMMDDhhmmss〔nn…n〕)
YYYY:0001~9999(年)
MM:01~12(月)
DD:01~該当年月の最終日(日)
hh:00~23(時)
mm:00~59(分)
ss:00~59(秒)11
nn…n:pけたの小数秒(n:0~9)
年,月,日,時,分,秒の六つの領域を持つ時刻印のデータ型です。
pは整数で,p=0,2,4,又は6です。省略した場合は,p=0が仮定されます。
日間隔データINTERVAL YEAR TO DAY日間隔
(5バイトパック形式 0YYYYMMDDs)
YYYY:0000~9999(か年)
MM:00~99※2(か月)
DD:00~99(か日)
s:符号(正:C,F 負:D)※8
日付データ型が,ある一時点を表すのに対して,日間隔データ型は,日付と日付の間隔を表すデータ型です。
日間隔の範囲は,-9999か年11か月99か日間~9999か年11か月99か日間です。
時間隔データINTERVAL HOUR TO SECOND時間隔
(4バイトパック形式 0hhmmsst)
hh:00~99(時間)
mm:00~99※3(分)
ss:00~99※3(秒)
t:符号(正:C,F 負:D)※8
時刻データ型が,ある一時点を表すのに対して,時間隔データ型は,時刻と時刻の間隔を表すデータ型です。
時間隔の範囲は-99時間59分59秒~99時間59分59秒です。
長大データBLOB〔(n〔{K|M|G}〕)〕
又は
BINARY LARGE OBJECT〔(n〔{K|M|G}〕)〕
バイナリデータ列
(最大長nバイト)
K:キロバイト単位
M:メガバイト単位
G:ギガバイト単位
最大長nバイトのバイナリデータ列です。
nを省略すると,2,147,483,647バイトが仮定されます。実長は0以上です。単位としてK,M,及びGが指定できます。※5
単位(K,M,又はG)を省略すると,バイト単位となります。
バイナリデータBINARY(n)バイナリデータ列
(最大長nバイト)
最大長nバイトのバイナリデータ列です。
nは省略できません。実長は0以上です。nは正整数で,1≦n≦2,147,483,647バイトです。
論理データBOOLEAN※7論理値(4バイト)論理値として真(TRUE),偽(FALSE),否定(UNKNOWN)をとります。
注1
文字データ,及び混在文字データの比較,及びデータ変換時,埋字の空白として使用する半角文字を次に示します。
データ型文字集合指定空白文字コード
文字データ省略X'20'
EBCDIKX'40'
UTF16X'0020'
混在文字データX'20'
各国文字データ使用している文字コードに依存
注※
?パラメタを介して文字コードがUTF-16のデータを操作する場合,文字集合名記述領域に文字集合名を指定してください。
また,プリプロセスオプション,及び埋込み変数の定義に,文字コードがUTF-16のデータを操作できるように指定することで,埋込み変数を介して文字コードがUTF-16のデータを操作できるようになります。
文字集合名に指定できる値を示します。
  • UTF16
  • UTF-16BE
  • UTF-16LE
文字集合名を指定した場合の空白文字コードを次に示します。
  • UTF16,及びUTF-16BEの場合
    X'0020'
  • UTF-16LEの場合
    X'2000'
UTF-16LE及びUTF-16BE(文字集合名記述領域のSQLCSNに設定できる文字集合情報)については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
注2
使用できる半角文字,及び全角文字の文字コードについては,「表1-1 SQLで使用できる文字」の注を参照してください。
注※1
各データ型はこれ以降,それぞれ代表的なデータ型を使用して示します。
注※2
12以上を指定した場合,年に繰り上げます。
注※3
mm,ssに60以上を指定した場合,それぞれ時,分に繰り上げます。
注※4
浮動小数点数の値の範囲は,ハードウェア表現に従います。
注※5
最大長を単位指定する場合の,指定範囲と実際の最大長を次に示します。
 
単 位nの指定範囲実際の最大長(バイト)
K1≦n≦2097152​n×1024
M1≦n≦2048n×1048576​
G1≦n≦2n×1073741824​
ただし,実際の最大長の計算結果が2147483648の場合は,2147483647になります。
注※6
pdsetupコマンドで文字コード種別にlang-cを指定した場合,各国文字データ,及び混在文字データは定義できません(UNIX版限定)。
注※7
BOOLEANは,関数の戻り値のデータ型としてだけ使用できます。列,SQL変数,又はSQLパラメタのデータ型としては使用できません。
注※8
DECIMAL型,日間隔型,及び時間隔型の符号部については,「1.2.4 DECIMAL型使用上の注意事項」を参照してください。
注※9
pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で文字コード種別にutf-8,又はchinese-gb18030を指定した場合,各国文字データは定義できません。
注※10
  • pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で文字コード種別にsjis以外を指定した場合,文字集合指定にEBCDIKを指定した文字データは使用できません。
  • pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で文字コード種別にutf-8以外を指定した場合,文字集合指定にUTF16を指定した文字データは使用できません。
    文字集合指定にUTF16を指定した場合,nは2の倍数にしてください。
注※11
pd_leap_secondオペランドでうるう秒を指定できるようにした場合,ssの範囲は00~61(秒)となります。pd_leap_secondオペランドについては,マニュアル「HiRDB Version 8 システム定義」を参照してください。

(2) ユーザ定義型

ユーザ定義型を次の表に示します。

表1-4 ユーザ定義型

データ型データ形式説明
抽象データ型CREATE TYPEで定義するデータ型を示します。データ型中に属性定義,ルーチンなどを定義できます。

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