このトピックでは、データ・タイプの組み合わせでサポートされる CAST についてリストします。
CAST は、データ・タイプのすべての組み合わせでサポートされるわけではありません。サポートされる CAST とその効果を以下にリストします。
キャストの際には、ソース・データ・タイプとターゲット・データ・タイプの間で 1 対 1 または多対 1 マッピングを行えます。1 対 1 マッピングの例としては、ソース・データ・タイプが 1 つの整数で、ターゲット・データ・タイプが 1 つの浮動小数点の場合があります。多対 1 マッピングの例としては、3 つの整数から成るソース・データが 1 つの日付に変換される場合があります。表 1 には、サポートされている 1 対 1 キャストがリストされています。表 2 には、サポートされている多対 1 キャストがリストされています。
precision、scale、および interval qualifier については、ESQL データ・タイプを参照してください。
ソース・データ・タイプ | ターゲット・データ・タイプ | 効果 |
---|---|---|
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 文字が含まれていた場合、この関数は変換エラーを報告します。 |
![]() ![]() |
![]() ![]() |
![]()
CCSID のみを指定する場合、ビッグ・エンディアン・エンコード方式と見なされます。 エンコード方式だけが指定する場合、CCSID は 1208 になります。 コード・ページまたはエンコード方式が未知のものである場合、またはデータの中に、指定されたコード・ページには変換できない UNICODE 文字が含まれていた場合、この関数は変換エラーを報告します。 ![]() |
CHARACTER | BOOLEAN | 文字ストリングは、ブール・リテラルと同じ方法で解釈されます。つまり、文字ストリングは、ストリング TRUE、FALSE、または UNKNOWN (大/小文字の組み合わせは自由) のいずれかでなければならないということです。 |
CHARACTER | CHARACTER | 結果は入力と同じです。 |
CHARACTER | DATE | FORMAT 文節を指定しない場合、文字ストリングは、日付リテラルまたは日付ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、DATE '2002-10-05' か 2002-10-05 のどちらかです。
日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
CHARACTER | DECIMAL | 文字ストリングは、正確な数値リテラルが、ストリングの形式で定義される scale と precision を使用した一時的な 10 進数の結果を形成するために解釈されるのと同じ方法で解釈されます。これは、指定した precision と scale の 10 進数に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。
precision と scale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。 FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。 |
CHARACTER | FLOAT | 文字ストリングは、浮動小数点リテラルと同じ方法で解釈されます。
FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。 |
CHARACTER | GMTTIME | 文字ストリングは、GMT 時刻リテラルまたは時刻ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、GMTTIME '09:24:15' か 09:24:15 のどちらかです。
FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
CHARACTER | GMTTIMESTAMP | 文字ストリングは、GMT タイム・スタンプ・リテラルまたはタイム・スタンプ・ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、GMTTIMESTAMP '2002-10-05 09:24:15' か 2002-10-05 09:24:15 のどちらかです。
FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
CHARACTER | INTEGER | 文字ストリングは、整数リテラルと同じ方法で解釈されます。
FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。 |
CHARACTER | INTERVAL | 文字ストリングは、CAST 関数で指定したのと同じ interval qualifier をもつインターバル・リテラルの規則に準拠していなければなりません。あるいは、指定した interval qualifier に適用されるインターバル・ストリングの規則に準拠していなければなりません。 |
CHARACTER | TIME | 文字ストリングは、時刻リテラルまたは時刻ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、TIME '09:24:15' か 09:24:15 のどちらかです。
FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
CHARACTER | TIMESTAMP | 文字ストリングは、タイム・スタンプ・リテラルまたはタイム・スタンプ・ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、TIMESTAMP '2002-10-05 09:24:15' か 2002-10-05 09:24:15 のどちらかです。
FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
DATE | CHARACTER | 結果は、日付リテラルの定義に準拠するストリングになり、解釈された値は、ソース日付値と同じになります。
以下に例を示します。
CAST(DATE '2002-10-05' AS CHARACTER)この場合、以下が戻されます。 DATE '2002-10-05' FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
DATE | DATE | 結果は入力と同じです。 |
DATE | GMTTIMESTAMP | 結果は、ソース日付値を基にした日付フィールドと、現在 GMT 時刻を基にした時刻フィールドを持つ値になります。 |
DATE | TIMESTAMP | 結果は、ソース日付値を基にした日付フィールドと、現在時刻を基にした時刻フィールドを持つ値になります。 |
DECIMAL | CHARACTER | 結果は、正確な数値リテラルの定義に準拠する最短の文字ストリングになり、解釈された値は 10 進数形式の値になります。 FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。 |
DECIMAL | DECIMAL | 値は、指定された precision と scale に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。precision と scale を指定しない場合は、値 precision と scale は元のままで、NOOP (ノーオペレーション) です。 |
DECIMAL | FLOAT | 数値は、必要に応じて丸められて変換されます。 |
DECIMAL | INTEGER | 値は四捨五入して整数に変換され、変換の結果として有効数字が失われる場合は、実行時エラーが生成されます。 |
DECIMAL | INTERVAL | 指定した interval qualifier のフィールドが 1 つだけの場合は、結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは正確な数値と等しくなります。それ以外の場合は、実行時エラーが生成されます。 |
FLOAT | CHARACTER | 結果は、近似数値リテラルの定義に準拠する最短の文字ストリングになり、小数部は 0 ではない 1 つの数字と、その後ろにピリオドと符号なし整数が続くという構成になっており、解釈された値は浮動形式の値になります。 FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。 |
FLOAT | FLOAT | 結果は入力と同じです。 |
FLOAT | DECIMAL | 値は、四捨五入され、指定した precision と scale の 10 進数に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。precision と scale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。 |
FLOAT | INTEGER | 値は四捨五入して整数に変換され、変換の結果として有効数字が失われる場合は、実行時エラーが生成されます。 |
FLOAT | INTERVAL | 指定した interval qualifier のフィールドが 1 つだけの場合は、結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは数値と等しくなります。それ以外の場合は、実行時エラーが生成されます。 |
GMTTIME | CHARACTER | 結果は、GMTTIME リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。
結果ストリングは、GMTTIME 'hh:mm:ss' という形式になります。 FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
GMTTIME | GMTTIME | 結果は入力と同じです。 |
GMTTIME | TIME | 結果の値は、ソース値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値になります。時フィールドは、モジュロ 24 として計算されます。 |
GMTTIME | GMTTIMESTAMP | 結果は、現在日付を基にした日付フィールドと、ソース GMT 時刻値を基にした時刻フィールドを持つ値になります。 |
GMTTIME | TIMESTAMP | 結果は、現在日付を基にした日付フィールドと、ソース GMT 時刻値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値を基にした時刻フィールドを持つ値になります。 |
GMTTIMESTAMP | CHARACTER | 結果は、GMTTIMESTAMP リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。結果ストリングは、GMTTIMESTAMP 'yyyy-mm-dd hh:mm:ss' という形式になります。 FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
GMTTIMESTAMP | DATE | 結果は、ソースGMTTIMESTAMP 値の日付フィールドで構成されるフィールドを持つ値になります。 |
GMTTIMESTAMP | GMTTIME | 結果は、ソース GMTTIMESTAMP 値の時刻フィールドで構成されるフィールドを持つ値になります。 |
GMTTIMESTAMP | TIME | 結果は、ソース GMTTIMESTAMP 値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値を基にした時刻フィールドを持つ値になります。 時フィールドは、モジュロ 24 として計算されます。 |
GMTTIMESTAMP | GMTTIMESTAMP | 結果は入力と同じです。 |
GMTTIMESTAMP | TIMESTAMP | 結果の値は、ソース値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値になります。 |
INTEGER | BIT | 指定された整数は、エレメント数が最大で 263 個のビット配列に変換されます。 |
INTEGER | BLOB | 指定された整数は、エレメント数が最大で 263 個のバイト配列に変換されます。 |
INTEGER | CHARACTER | 結果は、正確な数値リテラルの定義に準拠する最短の文字ストリングになり、解釈された値は整数の値になります。 FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。 |
INTEGER | FLOAT | 数値は、必要に応じて丸められて変換されます。 |
INTEGER | INTEGER | 結果は入力と同じです。 |
INTEGER | DECIMAL | 値は、指定した precision と scale の 10 進数に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。precision と scale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。 |
INTEGER | INTERVAL | 指定した interval qualifier のフィールドが 1 つだけの場合は、結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは正確な数値と等しくなります。それ以外の場合は、実行時エラーが生成されます。 |
INTERVAL | CHARACTER | 結果は、INTERVAL リテラルの定義に準拠するストリングになり、解釈された値は、ソース・インターバル値と同じになります。 以下に例を示します。
CAST(INTERVAL '4' YEARS AS CHARACTER)この場合、以下が戻されます。 INTERVAL '4' YEARS |
INTERVAL | DECIMAL | インターバル値の修飾子にフィールドが 1 つしかない場合、結果は、値に指定された precision および scale の 10 進数になります。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、実行時エラーが生成されます。precision と scale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。 |
INTERVAL | FLOAT | インターバル値の修飾子のフィールドが 1 つだけの場合は、結果はその値をもつ浮動小数点になります。インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、実行時エラーが生成されます。 |
INTERVAL | INTEGER | インターバル値の修飾子のフィールドが 1 つだけの場合は、結果はその値をもつ整数になります。インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、実行時エラーが生成されます。 |
INTERVAL | INTERVAL | 結果は入力と同じです。
年 - 月のインターバルは年 - 月のインターバルにのみ、また、日 - 秒のインターバルは日 - 秒のインターバルにのみ変換できます。ソース・インターバルはスカラーに変換され、その際の単位は、ターゲット interval qualifier の最小の有効フィールドの単位になります。この値は、ターゲット interval qualifier を使用したインターバルに正規化されます。例えば、MINUTE TO SECOND という修飾子のインターバルを、DAY TO HOUR という修飾子のインターバルに変換するには、ソース値が時間単位のスカラーに変換され、次いでその値は、DAY TO HOUR という修飾子のインターバルに正規化されます。 |
TIME | CHARACTER | 結果は、TIME リテラルの定義に準拠するストリングになり、解釈された値は、ソース時刻値と同じになります。 以下に例を示します。
CAST(TIME '09:24:15' AS CHARACTER)この場合、以下が戻されます。 TIME '09:24:15' FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
TIME | GMTTIME | 結果の値は、ソース値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値になります。時フィールドは、モジュロ 24 として計算されます。 |
TIME | GMTTIMESTAMP | 結果は、現在日付を基にした日付フィールドと、ソース GMT 時刻値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値を基にした時刻フィールドを持つ値になります。 |
TIME | TIME | 結果は入力と同じです。 |
TIME | TIMESTAMP | 結果は、現在日付を基にした日付フィールドと、ソース時刻値を基にした時刻フィールドをもつ値になります。 |
TIMESTAMP | CHARACTER | 結果は、TIMESTAMP リテラルの定義に準拠するストリングになり、解釈された値は、ソース・タイム・スタンプ値と同じになります。 以下に例を示します。
CAST(TIMESTAMP '2002-10-05 09:24:15' AS CHARACTER)この場合、以下が戻されます。 TIMESTAMP '2002-10-05 09:24:15' FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。 |
TIMESTAMP | DATE | 結果は、ソース・タイム・スタンプ値の日付フィールドで構成されるフィールドをもつ値になります。 |
TIMESTAMP | GMTTIME | 結果は、ソース TIMESTAMP 値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値を基にした時刻フィールドを持つ値になります。 時フィールドは、モジュロ 24 として計算されます。 |
TIMESTAMP | GMTTIMESTAMP | 結果の値は、ソース値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値になります。 |
TIMESTAMP | TIME | 結果は、ソース・タイム・スタンプ値の時刻フィールドで構成されるフィールドをもつ値になります。 |
TIMESTAMP | TIMESTAMP | 結果は入力と同じです。 |
ソース・データ・タイプ | ターゲット・データ・タイプ | 効果 |
---|---|---|
Numeric, Numeric, Numeric | DATE | 年、月、および日の順序の数値から、DATE 値を作成します。整数でない値は丸められます。 |
Numeric, Numeric, Numeric | TIME | 時、分、および秒の順序の数値から、TIME 値を作成します。時分の整数でない値は丸められます。 |
Numeric, Numeric, Numeric | GMTIME | 時、分、および秒の順序の数値から、GMTTIME 値を作成します。時分の整数でない値は丸められます。 |
Numeric, Numeric, Numeric, Numeric, Numeric, Numeric | TIMESTAMP | 年、月、日、時、分、および秒の順序の数値から、TIMESTAMP 値を作成します。年、月、日、時、および分の整数でない値は丸められます。 |
Numeric, Numeric, Numeric, Numeric, Numeric, Numeric | GMTTIMESTAMP | 年、月、日、時、分、および秒の順序の数値から、GMTIMESTAMP 値を作成します。年、月、日、時、および分の整数でない値は丸められます。 |
DATE, TIME | TIMESTAMP | 結果は、指定された DATE および TIME の TIMESTAMP 値になります。 |
DATE, GMTTIME | GMTIMESTAMP | 結果は、指定された DATE および GMTTIME の GMTTIMESTAMP 値になります。 |
Numeric, Numeric | INTERVAL YEAR TO MONTH | 結果は、最初のソースを年とし 2 番目のソースを月とした INTERVAL になります。整数でない値は丸められます。 |
Numeric, Numeric | INTERVAL HOUR TO MINUTE | 結果は、最初のソースを時間とし 2 番目のソースを分とした INTERVAL になります。整数でない値は丸められます。 |
Numeric, Numeric, Numeric | INTERVAL HOUR TO SECOND | 結果は、ソースをそれぞれ時間、分、および秒とした INTERVAL になります。時分の整数でない値は丸められます。 |
Numeric, Numeric | INTERVAL MINUTE TO SECOND | 結果は、ソースをそれぞれ分および秒とした INTERVAL になります。分の整数でない値は丸められます。 |
Numeric, Numeric | INTERVAL DAY TO HOUR | 結果は、ソースをそれぞれ日および時間とした INTERVAL になります。整数でない値は丸められます。 |
Numeric, Numeric, Numeric | INTERVAL DAY TO MINUTE | 結果は、ソースをそれぞれ日、時間、および分とした INTERVAL になります。整数でない値は丸められます。 |
Numeric, Numeric, Numeric, Numeric | INTERVAL DAY TO SECOND | 結果は、ソースをそれぞれ日、時間、分、および秒とした INTERVAL になります。日、時間、および分の整数でない値は丸められます。 |
Numeric | INTERVAL YEAR | 結果は、ソースを年とした INTERVAL になり、必要に応じて丸められます。 |
Numeric | INTERVAL MONTH | 結果は、ソースを月とした INTERVAL になり、必要に応じて丸められます。 |
Numeric | INTERVAL DAY | 結果は、ソースを日とした INTERVAL になり、必要に応じて丸められます。 |
Numeric | INTERVAL HOUR | 結果は、ソースを時間とした INTERVAL になり、必要に応じて丸められます。 |
Numeric | INTERVAL MINUTE | 結果は、ソースを分とした INTERVAL になり、必要に応じて丸められます。 |
Numeric | INTERVAL SECOND | 結果は、ソースを秒とした INTERVAL になります。 |