私は、BDEテーブル(ソース)をIB Datapumpを使用してFirebirdテーブル(宛先)に変換するためにinsert文を使用しています。そのため、INSERT文にはパラメータを介してソース表の値が渡されます。ソースフィールドパラメータの1つはalphanum (SOURCECHAR10 char(10)
で、ほとんどの場合整数を保持し、(整数型)宛先列NEWINTFLD
で整数に変換する必要があります。が数値でない場合は、NEWINTFLD
に0を代入します。IIFなどを使用してINSERTで整数にcharを変換する
私は、文字列が数値であるかどうかをテストし、数値でない場合は、次のように0を代入するためにIIF
とSIMILAR
を使用します。
INSERT INTO "DEST_TABLE" (......, "NEWINTFLD",.....)
VALUES(..., IIF(:"SOURCECHAR10" SIMILAR TO '[[:DIGIT:]]*', :"SOURCECHAR10", 0),..)
しかし、私はまだ変換エラーを取得し(DSQL error code = -303)
。
SOURCECHAR10" SIMILAR TO '[[:DIGIT:]]*', 1, 0)
のような
IIF
結果フィールドに定数のみでテストされ、それはそう何とか正常に動作します:を
IIF
の真の結果フィールドにエラーが発生します。 これを回避する方法はありますか?
に評価されたときに、外側のキャストが適用されて、私はこれを正しく読めば、あなたがしています値が数字で始まることをテストするだけです。あなたは数字で始まるが、後で数字以外の値を持つ値がありますか? – MatBailie
はい、そうかもしれません。しかしafaik [[:DIGIT:]] *は、私がhttp://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-similar-to.htmlを見ると「任意の桁数」を意味します。 –