1.2.2 変換(代入,比較)できるデータ型
変換(代入,比較)できるデータ型を次の表に示します。ただし,CAST指定,及びスカラ関数を使用して変換できるデータ型については,それぞれ「スカラ関数」,「CAST指定」を参照してください。
変換前データ型 |
変換後データ型 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
数データ |
文字データ |
各国文字データ |
混在文字データ |
日付データ |
時刻データ |
時刻印データ |
||||
INTEGER |
CHARACTER |
NCHAR |
MCHAR |
DATE |
TIME |
TIMESTAMP |
||||
SMALLINT |
||||||||||
DECIMAL |
VARCHAR |
NVARCHAR |
MVARCHAR |
|||||||
FLOAT |
||||||||||
SMALLFLT |
DF |
EK |
U16 |
|||||||
数データ
|
○,○ |
○,×※1 |
×,× |
○,×※1 |
×,× |
×,× |
×,× |
|||
文字データ
|
DF |
△,△※2※3 |
○,○ |
△,△ ※14 |
△,△ ※17 |
△,△※7 |
○,○ |
△,△※4 |
△,△※5 |
△,△※6 |
EK |
△,× ※15 |
○,○ |
×,× |
×,× |
×,× |
|||||
U16 |
△,△※16 |
×,× |
○,○ |
×,× |
△,△ ※16 |
|||||
各国文字データ
|
×,× |
×,× |
○,○ |
×,× |
×,× |
×,× |
×,× |
|||
混在文字データ
|
△,△※2※3 |
○,○ |
×,× |
△,△ ※17 |
×,× |
○,○ |
×,× |
×,× |
×,× |
|
日付データ
|
×,× |
×,△※8 |
×,× |
×,× |
○,○ |
×,× |
×,× |
|||
時刻データ
|
×,× |
×,△※9 |
×,× |
×,× |
×,× |
○,○ |
×,× |
|||
時刻印データ
|
×,× |
×,△※10 |
×,× |
×,× |
×,× |
×,× |
○,○※11 |
|||
日間隔データ
|
×,△※12 |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|||
時間隔データ
|
×,△※13 |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|||
長大データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|||
バイナリデータ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|||
バイナリデータ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|||
論理データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|||
抽象データ型 |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
- (凡例)
-
○:変換できます。
△:制限付きで変換できます。
×:変換できません。
DF:既定文字集合
EK:EBCDIK
U16:UTF16,UTF-16LE又はUTF-16BE
文字集合名UTF-16LE,UTF-16BEは,次の場合に指定してください。
-
?パラメタを介して文字コードがUTF-16のデータを操作する場合
-
プリプロセスオプション,及び埋込み変数の定義に,文字コードがUTF-16のデータを操作できるように指定し,埋込み変数を介して文字コードがUTF-16のデータを操作する場合
文字集合UTF-16LE及びUTF-16BE(文字集合名記述領域のSQLCSNに設定できる文字集合情報)については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
-
- 注
-
表中の変換可否は,「代入可否,比較可否」となっています。例えば,「○,○」の場合は代入及び比較ができて,「○,×」の場合は代入はできるが比較はできないということになります。
- 注※1
-
数データを文字データに変換する場合の対応関係を次に示します。なお,変換後のデータ型が混在文字データの場合は,VARCHARをMVARCHARに,CHARをMCHARに読み替えてください。
-
INTEGER型の数データは,VARCHAR(11)の文字データに変換されます。
-
SMALLINT型の数データは,VARCHAR(6)の文字データに変換されます。
-
DECIMAL(p,0)型の数データは,VARCHAR(p+1)の文字データに変換されます。
-
DECIMAL(p,s)型の数データは,VARCHAR(p+2)の文字データに変換されます。
-
FLOAT型又はSMALLFLT型の数データは,CHAR(23)の文字データに変換されます。
INTEGER型,SMALLINT型,及びDECIMAL型での数データが正の場合,変換された文字データには正の符号は含みません。また,FLOAT型及びSMALLFLT型の数データを文字データに変換する場合,指数部と仮数部に必ず符号を付加します。
-
- 注※2
-
文字データと数データを比較する場合,文字データを数データに変換して比較をします。文字データと数データを比較できるのは,比較述語,限定述語,IN述語,及びBETWEEN述語です。各述語ごとの比較可能な条件を次に示します。
述語
比較可能な条件
左右のどちらかが数データの場合に比較できます。
IN述語,限定述語
左側が数データの場合に比較できます。
BETWEEN述語
行値構成子1の行値構成子要素が数データの場合に比較できます。
文字データと数データを比較できるのは,以下に示す指定をした場合です。
- <文字データ>
-
-
定数(副問合せの選択式に指定した場合を含む)
-
?パラメタ
-
埋込み変数
-
SQL変数
-
SQLパラメタ
ただし,文字データ又は数データを,以下に示す位置に指定した場合は,SQL変数,SQLパラメタで指定した文字データを,数データに変換できません。
-
行値構成子要素数が2以上である行値構成子中の行値構成子要素
-
行副問合せ,又は表副問合せの選択式
-
比較述語の右側,IN述語の右側,限定述語の右側以外に指定したスカラ副問合せの選択式
-
- <数データ>
-
-
列指定(副問合せの選択式に指定した場合を含む)
-
- 注※3
-
文字データを数データに代入,比較する場合の対応関係を次に示します。
-
整数の文字列表現は,INTEGER型に変換されます。
-
10進数の文字列表現は,DECIMAL型に変換されます。
-
浮動小数点数の文字列表現は,FLOAT型に変換されます。
数の文字列表現の前後に空白がある場合,空白を無視して変換をします。
-
- 注※4
-
次に示すものは,日付データへの代入,及び日付データとの比較ができます。
-
日付を既定の文字列で表現した定数
-
CHAR(10)に対応する埋込み変数(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,又はUTF-16BEの場合はCHAR(20)に対応する埋込み変数)
-
- 注※5
-
次に示すものは,時刻データへの代入,及び時刻データとの比較ができます。
-
時刻を既定の文字列で表現した定数
-
CHAR(8)に対応する埋込み変数(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,UTF-16BEの場合はCHAR(16)に対応する埋込み変数)
-
- 注※6
-
次に示すものは,時刻印データとの比較,及び時刻印データへの変換ができます。
-
時刻印を既定の文字列表現で指定した定数
-
長さが19〜26バイトのCHARに対応する埋込み変数(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,UTF-16BEの場合は長さが38〜52バイトのCHARで,長さが2の倍数に対応する埋込み変数)
-
- 注※7
-
定義系SQLを除く,次に示す項目で文字列定数を記述した場合,各国文字列定数とみなし,文字データの長さだけをチェックし,文字コードはチェックしません。
-
INSERT文
-
UPDATE文
-
探索条件
-
- 注※8
-
次に示すものは,日付データと比較できます。
-
日付を既定の文字列で表現した定数
-
CHAR(10)に対応する埋込み変数(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,又はUTF-16BEの場合はCHAR(20)に対応する埋込み変数)
また,次の場合は,文字データに変換できます。
-
日付データを,長さが10バイト以上のCHAR,又はVARCHARの埋込み変数に代入した場合(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,又はUTF-16BEの場合は,長さが20バイト以上で長さが2の倍数のCHAR,又はVARCHARの埋込み変数に代入した場合)
-
- 注※9
-
次に示すものは,時刻データと比較できます。
-
時刻を既定の文字列で表現した定数
-
CHAR(8)に対応する埋込み変数(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,又はUTF-16BEの場合はCHAR(16)に対応する埋込み変数)
また,次の場合は,文字データに変換できます。
-
時刻データを,長さが8バイト以上のCHAR,又はVARCHARの埋込み変数に代入した場合(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,又はUTF-16BEの場合は,長さが16バイト以上で長さが2の倍数のCHAR,又はVARCHARの埋込み変数に代入した場合)
-
- 注※10
-
次に示すものは,時刻印データと比較できます。
-
時刻印を既定の文字列表現で指定した定数
-
長さが19〜26バイトのCHARに対応する埋込み変数(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,又はUTF-16BEの場合は長さが38〜52バイトで長さが2の倍数のCHARに対応する埋込み変数)
また,次の場合は文字データに代入できます。
-
変換前の時刻印データの小数秒精度をpとした場合,p=0の場合は19バイト以上,p>0の場合は20+pバイト以上の,CHAR又はVARCHARの埋込み変数への代入(ただし,埋込み変数の文字集合がUTF16,UTF-16LE,又はUTF-16BEの場合は,変換前の時刻印データの小数秒精度をpとした場合,p=0の場合は38バイト以上,p>0の場合は40+2pバイト以上で長さが2の倍数の,CHAR又はVARCHARの埋込み変数への代入)
-
- 注※11
-
代入元の小数秒精度が代入先の小数秒精度より高い場合,代入先の精度に合わせて小数行部分を切り捨てます。代入元の小数秒精度が代入先の代入先の小数秒精度より低い場合,代入先の精度に合わせて拡張した小数秒部分に0を補って格納します。
- 注※12
-
次に示すものは,日間隔データと比較できます。
-
日間隔を10進数で表現した定数
-
DECIMAL(8,0)に対応する埋込み変数
また,次の場合は,10進数データに変換できます。
-
日間隔データを,DECIMAL(8,0)の埋込み変数に代入した場合
-
- 注※13
-
次に示すものは,時間隔データと比較できます。
-
時間隔を10進数で表現した定数
-
DECIMAL(6,0)に対応する埋込み変数
また,次の場合は,10進数データに代入できます。
-
時間隔データを,DECIMAL(6,0)の埋込み変数に代入した場合
-
- 注※14
-
変換前の項目として次に示すものは,代入対象,比較対象の文字集合に変換するため,代入,比較できます。
-
文字列定数
-
埋込み変数(既定文字集合)
-
- 注※15
-
変換後の項目として次に示すものは,代入対象の文字集合に変換するため,代入できます。
-
埋込み変数(既定文字集合)
-
- 注※16
-
変換後の項目として次に示すものは,代入対象,比較対象の文字集合に変換するため,代入,比較できます。
-
埋込み変数(既定文字集合)
変換前の項目として次に示すものは,代入対象,比較対象の既定文字集合に変換するため,代入,比較できます。
-
埋込み変数(UTF16,UTF-16LE,又はUTF-16BE)
-
- 注※17
-
変換前の項目として次に示すものは,代入対象,比較対象の文字集合に変換するため,代入,比較できます。
-
文字列定数
-
埋込み変数(既定文字集合)
変換後の項目として次に示すものは,代入対象の文字集合に変換するため,代入できます。
-
埋込み変数(UTF16,UTF-16LE,又はUTF-16BE)
-
変換前データ型 |
変換後データ型 |
|||||||
---|---|---|---|---|---|---|---|---|
日間隔データ |
時間隔データ |
長大データ |
バイナリデータ |
論理データ |
抽象データ型 |
|||
INTERVAL YEAR TO DAY |
INTERVAL HOUR TO SECOND |
BLOB |
BINARY(n) 1≦n≦32,000 |
BINARY(n) n>32,000 |
BOOLEAN |
|||
数データ
|
△,△※1 |
△,△※2 |
×,× |
×,× |
×,× |
×,× |
×,× |
|
文字データ
|
DF |
×,× |
×,× |
×,× |
△,△※3 |
×,× |
×,× |
×,× |
EK |
×,× |
|||||||
U16 |
||||||||
各国文字データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|
混在文字データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|
日付データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|
時刻データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|
時刻印データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|
日間隔データ
|
○,○※4 |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|
時間隔データ
|
×,× |
○,○※5 |
×,× |
×,× |
×,× |
×,× |
×,× |
|
長大データ
|
×,× |
×,× |
○,× |
○,× |
○,× |
×,× |
×,× |
|
バイナリデータ
|
×,× |
×,× |
○,× |
○,○ |
○,× |
×,× |
×,× |
|
バイナリデータ
|
×,× |
×,× |
○,× |
○,× |
○,× |
×,× |
×,× |
|
論理データ
|
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
|
抽象データ型 |
×,× |
×,× |
×,× |
×,× |
×,× |
×,× |
△,×※6 |
- (凡例)
-
○:変換できます。
△:制限付きで変換できます。
×:変換できません。
DF:既定文字集合
EK:EBCDIK
U16:UTF16,UTF-16LE又はUTF-16BE
- 注
-
表中の変換可否は,「代入可否,比較可否」となっています。例えば,「○,○」の場合は代入及び比較ができて,「○,×」の場合は代入はできるが比較はできないということになります。
- 注※1
-
次に示すものは,日間隔データへの代入,及び日間隔データとの比較ができます。
-
日間隔を10進数で表現した定数
-
DECIMAL(8,0)に対応する埋込み変数
-
- 注※2
-
次に示すものは,時間隔データへの代入,及び時間隔データとの比較ができます。
-
時間隔を10進数で表現した定数
-
DECIMAL(6,0)に対応する埋込み変数
-
- 注※3
-
次に示すものは,BINARY型への代入,及びBINARY型との比較ができます。
-
16進文字列定数
-
- 注※4
-
日間隔データ同士の比較は,年,月,日の順で比較します。
- 注※5
-
時間隔データ同士の比較は,時,分,秒の順で比較します。
- 注※6
-
抽象データ型ADT2で定義された列,変数に対して,抽象データ型ADT1がADT2の値又はADT2のサブタイプの値の場合に,代入できます。