【问题标题】:sql loader - check for specific field valuesql loader - 检查特定字段值
【发布时间】:2013-05-24 12:09:50
【问题描述】:

我在 csv/文本文件中有一个名为“FLOATVALUE”的字段。我从第三方收到此文件,它的值可能低于

  1. {}
  2. 任何数字

当我如下插入这个值时

.... [其他实地检查]

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

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

.... [其他实地检查]

它检查 ":FLOATVALUES" 是否为空。如果是,则将 NULL 插入到 oracle 表中,如果不是,则无法插入值(“{}”)。

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

  1. 如果 :FLOATVALUE 为空,则插入 NULL
    elseif :FLOATVALUE 是 '{}' 插入 NULL
    else 惰性原始值

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

【问题讨论】:

    标签: sql oracle oracle11g oracle10g sql-loader


    【解决方案1】:

    你可以使用decode函数:

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

    也就是说:如果 FLOATVALUE 是 '{}',则插入 NULL,否则插入 FLOATVALUE

    【讨论】:

      【解决方案2】:

      您可以使用 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-28
        • 2019-05-22
        • 1970-01-01
        • 2018-10-02
        • 2018-08-28
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        相关资源
        最近更新 更多