使用SQL * Loader,我想要一个像这样的条件:
在以下情况下加载记录:substr(Col,3,2)='06'
Col ------ 10062034 . . .
有没有办法将WHEN与substr(或任何其他函数)结合在控制文件中?
我试过了WHEN (substr(Col,3,2)='06')
,但它没有用。
答案 0 :(得分:0)
您可以将When与其他功能结合使用,作为您的代码:
CASE substr(col,3,2)
WHEN '06' THEN
-- Do st
ELSE
-- Do st
END
HTH。
答案 1 :(得分:0)
不,WHEN
子句的语法非常严格;见http://docs.oracle.com/cd/B14117_01/server.101/b10825/ldr_control_file.htm#i1005657。您只能基于整个字段或特定字符位置进行限制。也就是说,如果您使用的是固定格式,那么您可以将substr(Col,3,2)
表示为一系列字符位置,这样就可以了。例如,如果Col
从字符#20开始,那么您可以使用WHEN (22:23) = '06'
。但是,如果您使用的是免费格式,例如FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
,那么您通常不会知道Col
的字符偏移量。