1.2.1 データ型
データ型は次の二つに分けられます。
-
既定義型
-
ユーザ定義型
形式
データ型::={既定義型|ユーザ定義型}
説明
-
既定義型
HiRDBが提供するデータ型を指定します。
-
ユーザ定義型
ユーザ定義型は次の形式で指定します。
〔認可識別子.〕データ型識別子
- 認可識別子
-
ユーザ定義型の認可識別子を指定します。
- データ型識別子
-
ユーザ定義型のデータ型識別子を指定します。
- 〈この項の構成〉
(1) 既定義型
既定義型を次の表に示します。
分 類 |
データ型※1 |
データ形式 |
説 明 |
---|---|---|---|
整数 (4バイトの2進形式) |
値の範囲が−2147483648〜2147483647の整数です。 |
||
整数 (2バイトの2進形式) |
値の範囲が−32768〜32767の整数です。 |
||
〔LARGE〕 〔(m〔,n〕)〕 又は 〔(m〔,n〕)〕 |
固定小数点数 (↑(m+1)/2↑バイトのパック10進形式)※8 |
精度(全体のけた数)がmけたで,位取り(小数点以下のけた数)がnけたの固定小数点数です。 m,nは正整数で,1≦m≦38,0≦n≦38,n≦mです。 mを省略すると,15が仮定されます。 nを省略すると,0が仮定されます。 |
|
倍精度浮動小数点数 (8バイト) |
値の範囲が約±4.9×10-324〜±1.7×10308の倍精度浮動小数点数です。※4 |
||
単精度浮動小数点数 (4バイト) |
値の範囲が約±1.4×10-45〜±3.4×1038の単精度浮動小数点数です。※4 |
||
〔(n)〕 〔CHARACTER SET 文字集合指定〕 |
固定長文字列 (長さnバイト) |
長さがnバイトの固定長文字列です。
nは正整数で1≦n≦30,000です。nを省略すると,1が仮定されます。 文字集合指定は文字データに対する属性を指定します。詳細は「文字集合」を参照してください。 |
|
〔LONG〕 |
可変長文字列 (最大長nバイト) |
最大長がnバイトの可変長文字列です。
nは正整数で1≦n≦32,000です。実長は0以上です。 文字集合指定は文字データに対する属性を指定します。詳細は「文字集合」を参照してください。 |
|
固定長各国文字列 (長さn文字) |
長さn文字(2nバイト)の2バイト文字から成る固定長各国文字列です。 nは正整数で1≦n≦15,000です。nを省略すると,1が仮定されます。 |
||
〔LONG〕 |
可変長各国文字列 (最大長n文字) |
最大長がn文字(2nバイト)の2バイト文字から成る可変長各国文字列です。 nは正整数で1≦n≦16,000です。実長は0以上です。 |
|
固定長混在文字列 (長さnバイト) |
長さnバイトの半角文字と全角文字の混在する固定長混在文字列です。 nは正整数で1≦n≦30,000です。nを省略すると,1が仮定されます。 |
||
〔LONG〕 |
可変長混在文字列 (最大長nバイト) |
最大長nバイトの半角文字と全角文字の混在する可変長混在文字列です。 nは正整数で1≦n≦32,000です。実長は0以上です。 |
|
日付 (4バイト符号なしパック形式YYYYMMDD) YYYY:0001〜9999(年) MM:01〜12(月) DD:01〜該当年月の最終日(日) |
年,月,日の三つの領域を持つ日付のデータ型です。 |
||
時刻 (3バイト符号なしパック形式hhmmss) hh:00〜23(時) mm:00〜59(分) ss:00〜61(秒)※11 |
時,分,秒の三つの領域を持つ時刻のデータ型です。 |
||
時刻印 (7〜10バイトの符号なしパック形式YYYYMMDDhhmmss〔nn…n〕) YYYY:0001〜9999(年) MM:01〜12(月) DD:01〜該当年月の最終日(日) hh:00〜23(時) mm:00〜59(分) ss:00〜61(秒)※11 nn…n:pけたの小数秒(n:0〜9) |
年,月,日,時,分,秒の六つの領域を持つ時刻印のデータ型です。 pは整数で,p=0,2,4,又は6です。省略した場合は,p=0が仮定されます。 |
||
日間隔 (5バイトパック形式 0YYYYMMDDs) YYYY:0000〜9999(か年) MM:00〜99※2(か月) DD:00〜99(か日) s:符号(正:C,F 負:D)※8 |
日付データ型が,ある一時点を表すのに対して,日間隔データ型は,日付と日付の間隔を表すデータ型です。 日間隔の範囲は,−9999か年11か月99か日間〜9999か年11か月99か日間です。 |
||
時間隔 (4バイトパック形式 0hhmmsst) hh:00〜99(時間) mm:00〜99※3(分) ss:00〜99※3(秒) t:符号(正:C,F 負:D)※8 |
時刻データ型が,ある一時点を表すのに対して,時間隔データ型は,時刻と時刻の間隔を表すデータ型です。 時間隔の範囲は−99時間59分59秒〜99時間59分59秒です。 |
||
又は |
バイナリデータ列 (最大長nバイト) K:キロバイト単位 M:メガバイト単位 G:ギガバイト単位 |
最大長nバイトのバイナリデータ列です。 nを省略すると,2,147,483,647バイトが仮定されます。実長は0以上です。単位としてK,M,及びGが指定できます。※5 単位(K,M,又はG)を省略すると,バイト単位となります。 |
|
バイナリデータ列 (最大長nバイト) |
最大長nバイトのバイナリデータ列です。 nは省略できません。実長は0以上です。nは正整数で,1≦n≦2,147,483,647バイトです。 |
||
論理値(4バイト) |
論理値として真(TRUE),偽(FALSE),否定(UNKNOWN)をとります。 |
- 注1
-
文字データ,及び混在文字データの比較,及びデータ変換時,埋字の空白として使用する半角文字を次に示します。
データ型
文字集合指定
空白文字コード
文字データ
省略
X’20’
EBCDIK
X’40’
UTF16
X’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 UAP開発ガイド」を参照してください。
-
- 注2
-
使用できる半角文字,及び全角文字の文字コードについては,表「SQLで使用できる文字」の注を参照してください。
- 注※1
-
各データ型はこれ以降,それぞれ代表的なデータ型を使用して示します。
- 注※2
-
12以上を指定した場合,年に繰り上げます。
- 注※3
-
mm,ssに60以上を指定した場合,それぞれ時,分に繰り上げます。
- 注※4
-
浮動小数点数の値の範囲は,ハードウェア表現に従います。
- 注※5
-
最大長を単位指定する場合の,指定範囲と実際の最大長を次に示します。
単 位
nの指定範囲
実際の最大長(バイト)
K
1≦n≦2097152
n×1024
M
1≦n≦2048
n×1048576
G
1≦n≦2
n×1073741824
ただし,実際の最大長の計算結果が2147483648の場合は,2147483647になります。
- 注※6
-
pdsetupコマンドで文字コード種別にlang-cを指定した場合,各国文字データ,及び混在文字データは定義できません(UNIX版限定)。
- 注※7
-
BOOLEANは,関数の戻り値のデータ型としてだけ使用できます。列,SQL変数,又はSQLパラメタのデータ型としては使用できません。
- 注※8
-
DECIMAL型,日間隔型,及び時間隔型の符号部については,「DECIMAL型使用上の注意事項」を参照してください。
- 注※9
-
pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で文字コード種別にutf-8,utf-8_ivs,又はchinese-gb18030を指定した場合,各国文字データは定義できません。
- 注※10
-
-
pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で文字コード種別にsjis以外を指定した場合,文字集合指定にEBCDIKを指定した文字データは使用できません。
-
pdntenvコマンド(UNIX版の場合はpdsetupコマンド)で文字コード種別にutf-8,utf-8_ivs以外を指定した場合,文字集合指定にUTF16を指定した文字データは使用できません。
文字集合指定にUTF16を指定した場合,nは2の倍数にしてください。
-
- 注※11
-
pd_leap_secondがNの場合,ssの範囲は00〜59(秒)となります。pd_leap_secondオペランドについては,マニュアル「HiRDB システム定義」を参照してください。