IB Datapump를 사용하여 BDE 테이블 (소스)을 Firebird 테이블 (대상)으로 변환하기 위해 insert 문을 사용하고 있습니다. 따라서 INSERT 문은 매개 변수를 통해 소스 테이블 값에 의해 제공됩니다. 소스 필드 매개 변수 중 하나는 alphanum (SOURCECHAR10 char(10)
이며 대부분 정수를 포함하며 (정수 유형) 대상 열 NEWINTFLD
에서 정수로 변환해야합니다. SOURCECHAR10
이 숫자가 아니면 NEWINTFLD
에 0을 지정하고 싶습니다.IIF와 비슷한 것을 사용하여 INSERT에서 숯을 정수로 변환
내가 IIF
를 사용하고 SIMILAR
문자열이 숫자인지 테스트, 및 숫자하지 않을 경우 다음과 같이 0을 할당합니다 :
INSERT INTO "DEST_TABLE" (......, "NEWINTFLD",.....)
VALUES(..., IIF(:"SOURCECHAR10" SIMILAR TO '[[:DIGIT:]]*', :"SOURCECHAR10", 0),..)
를 모든 숫자가 아닌 문자열이 들어 있지만, 난 아직도 변환 오류 (DSQL error code = -303)
를 얻을.
SOURCECHAR10" SIMILAR TO '[[:DIGIT:]]*', 1, 0)
같은
IIF
결과 필드에 상수 만 테스트하고 그래서 어떻게 든 잘 작동 :
SOURCECHAR10
을
IIF
의 진정한 결과 필드에 오류가 발생합니다. 아이디어를 얻는 방법에 대한 아이디어가 있으십니까?
true로 평가 될 때 외부 캐스트를 적용, 당신이있어 적용되어있는 VARCHAR 같은 얘기들이었다 값이 숫자로 시작하는지 테스트합니다. 나중에 숫자로 시작하지만 나중에 숫자가 아닌 값을 갖는 값이 있습니까? – MatBailie
예,있을 수 있습니다. 그러나 afaik [[: DIGIT :]] *는 http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-similar-to.html을 보면 '임의의 자리수'를 의미합니다. –