sql loader - 检查特定的字段值

时间:2013-05-24 03:36:22

标签: sql oracle oracle11g oracle10g sql-loader

我在csv / text文件中有一个名为“FLOATVALUE”的字段。我从第三方收到此文件,其中包含以下可能的值

  
      
  1. NULL
  2.   
  3. {}
  4.   
  5. 任意数字
  6.   

当我将此值插入如下

  

.... [其他现场检查]

     

isValid "nvl(:isValid, '')",

     

FLOATVALUE FLOAT EXTERNAL "nvl(:FLOATVALUE, NULL)"

     

.... [其他现场检查]

它检查“:FLOATVALUES”是否为空。如果是的话,它会在oracle表中插入NULL,否则就无法插入值(“{}”)。

我正在加载到oracle表中的字段是'FLOATVALUE FLOAT'。我希望在我的控制文件中有类似下面的内容 -

  
      
  1. if:FLOATVALUE为null插入NULL
      elseif:FLOATVALUE是'{}'插入NULL
      其他惰性原始值
  2.   

如何在控制文件中指定上述条件?

2 个答案:

答案 0 :(得分:1)

您可以使用decode功能:

decode(:FLOATVALUE, '{}', NULL, :FLOATVALUE)

即:如果FLOATVALUE为'{}',则插入NULL,否则插入FLOATVALUE

答案 1 :(得分:0)

您可以使用decode或case when语句。请参阅下面的示例

Decode :
decode(Float_value,{},NULL,Float_value);

Case when :
CASE  [ FLOAT_VALUE ]
WHEN NULL THEN NULL
WHEN {} THEN NULL
ELSE [FLOAT_VALUE]
END;