我在插入语句中使用 IB Datapump 将 BDE 表(源)转换为 Firebird 表(目标)。因此 INSERT 语句由源表值通过参数提供。源字段参数之一是alphanum (SOURCECHAR10 char(10)
,主要保存整数,需要在(整数类型)目标列中转换为整数NEWINTFLD
。如果SOURCECHAR10
不是数字,我想将 0 分配给NEWINTFLD
.
我使用IIF
andSIMILAR
来测试字符串是否为数字,如果不是数字则分配 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
生成错误。任何想法如何解决这个问题?