我在插入语句中使用 IB Datapump 将 BDE 表(源)转换为 Firebird 表(目标)。因此 INSERT 语句由源表值通过参数提供。源字段参数之一是alphanum (SOURCECHAR10 char(10),主要保存整数,需要在(整数类型)目标列中转换为整数NEWINTFLD。如果SOURCECHAR10不是数字,我想将 0 分配给NEWINTFLD.
我使用IIFandSIMILAR来测试字符串是否为数字,如果不是数字则分配 0,如下所示:
INSERT INTO "DEST_TABLE" (......, "NEWINTFLD",.....)
VALUES(..., IIF( :"SOURCECHAR10" SIMILAR TO '[[:DIGIT:]]*', :"SOURCECHAR10", 0),..)
但是,对于每个非数字字符串,我仍然会收到转换错误(DSQL error code = -303)。
IIF我只在结果字段中使用常量进行了测试,SOURCECHAR10" SIMILAR TO '[[:DIGIT:]]*', 1, 0)并且工作正常,所以不知何故 :SOURCECHAR10在的真实结果字段中IIF生成错误。任何想法如何解决这个问题?