サポートされる CAST

このトピックでは、 データ・タイプの組み合わせでサポートされる CAST についてリストします。

CAST は、データ・タイプのすべての組み合わせでサポートされるわけではありません。 サポートされる CAST とその効果を以下にリストします。

ソース・データ・タイプ ターゲット・データ・タイプ 効果
BIT BIT 結果は入力と同じです。
BIT BLOB ビット配列は、 エレメント数が最大で 263 個のバイト配列に変換されます。 ソースの長さが BLOB となるために適切でない場合 (8 の倍数でない場合)、 エラーが報告されます。
BIT CHARACTER 結果は、ビット・ストリング・リテラルの定義に準拠するストリングになり、 解釈された値は、ソース値と同じになります。 結果ストリングは、B'bbbbbb' (b は 0 か 1) という形式になります。

CCSID 文節または ENCODING 文節のいずれかを指定した場合、 指定されたビット配列は、指定された CCSID およびエンコード方式の文字であると見なされ、 コード・ページが変換されて文字戻り値に入れられます。

CCSID のみを指定する場合、 ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、 またはデータがコード・ページでは文字数が整数にならない長さである場合、 またはデータの中に指定されたコード・ページでは無効な文字が含まれていた場合、 この関数は変換エラーを報告します。

BIT INTEGER ビット配列は、エレメント数が最大で 263 であり、整数に変換されます。 ソースが整数として適切な長さでない場合、エラーが報告されます。
BLOB BIT 指定されたバイト配列は、 エレメント数が最大で 263 個のビット配列に変換されます。
BLOB BLOB 結果は入力と同じです。
BLOB CHARACTER 結果は、バイナリー・ストリング・リテラルの定義に準拠するストリングになり、 解釈された値は、ソース値と同じになります。 結果ストリングは、X'hhhh' (h は任意の 16 進文字) という形式になります。

CCSID 文節または ENCODING 文節のいずれかを指定した場合、 指定されたバイト配列は、指定された CCSID およびエンコード方式の文字であると見なされ、 コード・ページが変換されて文字戻り値に入れられます。

CCSID のみを指定する場合、 ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、 またはデータがコード・ページでは文字数が整数にならない長さである場合、 またはデータの中に指定されたコード・ページでは無効な文字が含まれていた場合、 この関数は変換エラーを報告します。

BLOB INTEGER バイト配列は、エレメント数が最大で 263 であり、整数に変換されます。 ソースが整数として適切な長さでない場合、エラーが報告されます。
BOOLEAN BOOLEAN 結果は入力と同じです。
BOOLEAN CHARACTER ソース値が TRUE の場合、結果は文字ストリング TRUE になります。 ソース値が FALSE の場合、結果は文字ストリング FALSE になります。 ブールでは、UNKNOWN というブール値は NULL 値と同じであるので、 ソース値が UNKNOWN の場合、結果は NULL 文字ストリング値になります。
CHARACTER BIT 文字ストリングは、ビット・ストリング・リテラルの規則またはビット・ストリング・リテラルの内容の規則に準拠していなければなりません。 つまり、文字ストリングは、 B'bbbbbbb' か bbbbbb (b は 0 か 1) のどちらかです。

CCSID 文節または ENCODING 文節だけを指定する場合、 文字ストリングは指定された CCSID とエンコード方式に変換され、 それ以外の変換は実施されることなくビット配列戻り値に入れられます。

CCSID のみを指定する場合、 ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、 またはデータの中に、指定されたコード・ページには変換できない UNICODE 文字が含まれていた場合、 この関数は変換エラーを報告します。

CHARACTER BLOB 文字ストリングは、バイナリー・ストリング・リテラルの規則またはバイナリー・ストリング・リテラルの内容の規則に準拠していなければなりません。 つまり、文字ストリングは、X'hhhhhh' か hhhhhh (h は任意の 16 進文字) のどちらかです。

CCSID 文節または ENCODING 文節だけを指定する場合、 文字ストリングは指定された CCSID とエンコード方式に変換され、 それ以外の変換は実施されることなくバイト配列戻り値に入れられます。

CCSID のみを指定する場合、 ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、 またはデータの中に、指定されたコード・ページには変換できない UNICODE 文字が含まれていた場合、 この関数は変換エラーを報告します。

CHARACTER BOOLEAN 文字ストリングは、ブール・リテラルと同じ方法で解釈されます。 つまり、文字ストリングは、ストリング TRUE、FALSE、 または UNKNOWN (大文字小文字の組み合わせは自由) のいずれかでなければならないということです。
CHARACTER CHARACTER 結果は入力と同じです。
CHARACTER DATE 文字ストリングは、日付リテラルまたは日付ストリングの規則に準拠していなければなりません。 つまり、文字ストリングは、DATE '2002-10-05' か 2002-10-05 のどちらかです。
CHARACTER DECIMAL 文字ストリングは、正確な数値リテラルが、 ストリングの形式で定義される位取りと精度を使用した一時的な 10 進数を形成するために解釈されるのと同じ方法で解釈されます。 これは、指定した精度と位取りの 10 進数に変換されます。 変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。

精度と位取りを指定しない場合は、 指定された値を保持するのに最低限必要な精度および位取りが設定されます。

CHARACTER FLOAT 文字ストリングは、浮動小数点リテラルと同じ方法で解釈されます。
CHARACTER GMTTIME 文字ストリングは、GMT 時刻リテラルまたは時刻ストリングの規則に準拠していなければなりません。 つまり、文字ストリングは、GMTTIME '09:24:15' か 09:24:15 のどちらかです。
CHARACTER GMTTIMESTAMP 文字ストリングは、GMT タイム・スタンプ・リテラルまたはタイム・スタンプ・ストリングの規則に準拠していなければなりません。 つまり、文字ストリングは、GMTTIMESTAMP '2002-10-05 09:24:15' か 2002-10-05 09:24:15 のどちらかです。
CHARACTER INTEGER 文字ストリングは、整数リテラルと同じ方法で解釈されます。
CHARACTER INTERVAL 文字ストリングは、CAST 指定で指定したのと同じインターバル修飾子をもつインターバル・リテラルの規則に準拠していなければなりません。 あるいは、指定したインターバル修飾子に適用されるインターバル・ストリングの規則に準拠していなければなりません。
CHARACTER TIME 文字ストリングは、時刻リテラルまたは時刻ストリングの規則に準拠していなければなりません。 つまり、文字ストリングは、TIME '09:24:15' か 09:24:15 のどちらかです。
CHARACTER TIMESTAMP 文字ストリングは、タイム・スタンプ・リテラルまたはタイム・スタンプ・ストリングの規則に準拠していなければなりません。 つまり、文字ストリングは、TIMESTAMP '2002-10-05 09:24:15' か 2002-10-05 09:24:15 のどちらかです。
DATE CHARACTER 結果は、日付リテラルの定義に準拠するストリングになり、解釈された値は、ソース日付値と同じになります。
以下に例を示します。
CAST(DATE '2002-10-05' AS CHAR)
DATE '2002-10-05'
を戻します。
DATE DATE 結果は入力と同じです。
DECIMAL CHARACTER 結果は、正確な数値リテラルの定義に準拠する最短の文字ストリングになり、 解釈された値は 10 進数形式の値になります。
DECIMAL DECIMAL

値は、指定された精度と位取りに変換されます。 変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。 精度と位取りを指定しない場合は、値、精度と位取りは元のままです。 NOOP (ノーオペレーション) です。

DECIMAL FLOAT 数値は、必要に応じて丸められて変換されます。
DECIMAL INTEGER

値は四捨五入して整数に変換され、 変換の結果として有効数字が失われる場合は、実行時エラーが生成されます。

DECIMAL INTERVAL 指定したインターバル修飾子のフィールドが 1 つだけの場合は、 結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは正確な数値と等しくなります。 それ以外の場合は、実行時エラーが生成されます。
FLOAT CHARACTER 結果は、近似数値リテラルの定義に準拠する最短の文字ストリングになり、 小数部は 0 ではない 1 つの数字と、 その後ろにピリオドと符号なし整数が続くという構成になっており、 解釈された値は浮動形式の値になります。
FLOAT FLOAT 結果は入力と同じです。
FLOAT DECIMAL

値は、四捨五入され、指定した精度と位取りの 10 進数に変換されます。 変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。 精度と位取りを指定しない場合は、 指定された値を保持するのに最低限必要な精度および位取りが設定されます。

FLOAT INTEGER

値は四捨五入して整数に変換され、 変換の結果として有効数字が失われる場合は、実行時エラーが生成されます。

GMTTIME CHARACTER 結果は、GMTTIME リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。 結果ストリングは、GMTTIME 'hh:mm:ss' という形式になります。
GMTTIME

GMTTIME

結果は入力と同じです。
GMTTIME TIME 結果の値は、ソース値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値になります。 時フィールドは、モジュロ 24 として計算されます。
GMTTIMESTAMP CHARACTER 結果は、GMTTIMESTAMP リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。 結果ストリングは、GMTTIMESTAMP 'yyyy-mm-dd hh:mm:ss' という形式になります。
GMTTIMESTAMP GMTTIMESTAMP 結果は入力と同じです。
GMTTIMESTAMP TIMESTAMP 結果の値は、ソース値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値になります。
INTEGER BIT 指定された整数は、 エレメント数が最大で 263 個のビット配列に変換されます。
INTEGER BLOB 指定された整数は、 エレメント数が最大で 263 個のバイト配列に変換されます。
INTEGER CHARACTER 結果は、正確な数値リテラルの定義に準拠する最短の文字ストリングになり、 解釈された値は整数の値になります。
INTEGER FLOAT 数値は、必要に応じて丸められて変換されます。
INTEGER INTEGER 結果は入力と同じです。
INTEGER DECIMAL

この値は、指定した精度と位取りの 10 進数に変換されます。 変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。 精度と位取りを指定しない場合は、 指定された値を保持するのに最低限必要な精度および位取りが設定されます。

INTEGER INTERVAL 指定したインターバル修飾子のフィールドが 1 つだけの場合は、 結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは正確な数値と等しくなります。 それ以外の場合は、実行時エラーが生成されます。
INTERVAL CHARACTER 結果は、INTERVAL リテラルの定義に準拠するストリングになり、 解釈された値は、ソース・インターバル値と同じになります。
以下に例を示します。
CAST(INTERVAL '4' YEARS AS CHAR)
INTERVAL '4' YEARS
を戻します。
INTERVAL DECIMAL

インターバル値の修飾子にフィールドが 1 つしかない場合、 結果は、値に指定された精度および位取りの 10 進数になります。 変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。 インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、 実行時エラーが生成されます。 精度と位取りを指定しない場合は、 指定された値を保持するのに最低限必要な精度および位取りが設定されます。

INTERVAL INTEGER

インターバル値の修飾子のフィールドが 1 つだけの場合は、結果はその値をもつ整数になります。 インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、 実行時エラーが生成されます。

INTERVAL INTERVAL 結果は入力と同じです。

年 - 月のインターバルは年 - 月のインターバルにのみ、 また、日 - 秒のインターバルは日 - 秒のインターバルにしか変換できません。 ソース・インターバルはスカラーに変換され、 その際の単位は、ターゲット・インターバル修飾子の最小の有効フィールドの単位になります。 この値は、ターゲット・インターバル修飾子を使用したインターバルに正規化されます。 たとえば、MINUTE TO SECOND という修飾子のインターバルを、 DAY TO HOUR という修飾子のインターバルに変換するには、 ソース値が時間単位のスカラーに変換され、次いでその値は、 DAY TO HOUR という修飾子のインターバルに正規化されます。

TIME CHARACTER 結果は、TIME リテラルの定義に準拠するストリングになり、 解釈された値は、ソース時刻値と同じになります。
以下に例を示します。
CAST(TIME '09:24:15' AS CHAR)
TIME '09:24:15'
を戻します。
TIME GMTTIME 結果の値は、ソース値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値になります。 時フィールドは、モジュロ 24 として計算されます。
TIME TIME 結果は入力と同じです。
TIME TIMESTAMP 結果は、現在日付を基にした日付フィールドと、 ソース時刻値を基にした時刻フィールドをもつ値になります。
TIMESTAMP CHARACTER 結果は、TIMESTAMP リテラルの定義に準拠するストリングになり、 解釈された値は、ソース・タイム・スタンプ値と同じになります。
以下に例を示します。
CAST(TIMESTAMP '2002-10-05 09:24:15' AS CHAR)
TIMESTAMP '2002-10-05 09:24:15'
を戻します。
TIMESTAMP DATE 結果は、ソース・タイム・スタンプ値の日付フィールドで構成されるフィールドをもつ値になります。
TIMESTAMP GMTTIMESTAMP 結果の値は、ソース値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値になります。
TIMESTAMP TIME 結果は、ソース・タイム・スタンプ値の時刻フィールドで構成されるフィールドをもつ値になります。
TIMESTAMP TIMESTAMP 結果は入力と同じです。

precisionscale、 および interval qualifier については、 ESQL データ・タイプをご覧ください。

関連概念
ESQL
ESQL データ・タイプ

関連タスク
ESQL の開発

関連資料
複合 ESQL 関数
CAST 関数
CAST 指定
暗黙のキャスト
外部ソースの値のデータ・タイプ