2

DB2 V9 z/os

背景: 私は次のように定義された 4 列のテーブルを持っています。(col1 int, col2 smallint, col3 int, col4 date)

行 1 の値は (1,123,456,2012-08-23)

以下を実行すると:

SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5))
  FROM db.T1 
 WHERE col1 = 1;

値 123456 が返されます。これはまさに私が望むものです。

以下を実行すると:

UPDATE db.table2
   SET col3 = SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5))
  FROM db.T1 
 WHERE col1 = 1;

エラーは次のとおりです。

SQL0408N 値がその割り当てターゲットのデータ・タイプと互換性がありません。ターゲット名は「col3」です。SQLSTATE=42821

このエラーは、varchar を整数に挿入しようとしたことが原因であると理解しています。他に何ができますか?さまざまな CAST ステートメントを使用してみましたが、col3 に挿入する値を取得できません。上記のように値を結合して表示する必要があります。

どんな助けでも大歓迎です。

4

2 に答える 2

3

すべてのキャストをファイナルとしてラップするとcast( ... as integer)うまくいくはずです:

UPDATE db.table2 
SET col3 = SELECT CAST(
        CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5)) 
    AS INTEGER)
FROM db.T1 
WHERE col1 = 1;
于 2012-08-23T15:16:50.660 に答える