変換(代入,比較)できるデータ型を次の表に示します。ただし,CAST指定,及びスカラ関数を使用して変換できるデータ型については,それぞれ「2.16 スカラ関数」,「2.25 CAST指定」を参照してください。
表1-5 変換(代入,比較)できるデータ型(1/2)
変換前データ型 | 変換後データ型 |
---|
数データ | 文字データ | 各国文字データ | 混在文字データ | 日付データ | 時刻データ | 時刻印データ |
---|
INTEGER | CHARACTER | NCHAR | MCHAR | DATE | TIME | TIMESTAMP |
---|
SMALLINT |
---|
DECIMAL | VARCHAR | NVARCHAR | MVARCHAR |
---|
FLOAT |
---|
SMALLFLT | DF | EK | U16 |
---|
数データ
- INTEGER
- SMALLINT
- DECIMAL
- FLOAT
- SMALLFLT
| ○,○ | ○,×※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 Version 8 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文については,「4. 操作系SQL」を,探索条件については,「2.7 探索条件」を参照してください。
- 注※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
- 変換前の項目として次に示すものは,代入対象,比較対象の文字集合に変換するため,代入,比較できます。
- 変換後の項目として次に示すものは,代入対象の文字集合に変換するため,代入できます。
- (凡例)
- ○:変換できます。
- △:制限付きで変換できます。
- ×:変換できません。
- DF:既定文字集合
- EK:EBCDIK
- U16:UTF16,UTF-16LE又はUTF-16BE
- 注
- 表中の変換可否は,「代入可否,比較可否」となっています。例えば,「○,○」の場合は代入及び比較ができて,「○,×」の場合は代入はできるが比較はできないということになります。
- 注※1
- 次に示すものは,日間隔データへの代入,及び日間隔データとの比較ができます。
- 日間隔を10進数で表現した定数
- DECIMAL(8,0)に対応する埋込み変数
- 注※2
- 次に示すものは,時間隔データへの代入,及び時間隔データとの比較ができます。
- 時間隔を10進数で表現した定数
- DECIMAL(6,0)に対応する埋込み変数
- 注※3
- 次に示すものは,BINARY型への代入,及びBINARY型との比較ができます。
- 注※4
- 日間隔データ同士の比較は,年,月,日の順で比較します。
- 注※5
- 時間隔データ同士の比較は,時,分,秒の順で比較します。
- 注※6
- 抽象データ型ADT2で定義された列,変数に対して,抽象データ型ADT1がADT2の値又はADT2のサブタイプの値の場合に,代入できます。