Условная загрузка с помощью Sql*Loader

Используя SQL*Loader, я хочу следующее условие:

Загрузите запись, если:substr(Col,3,2)='06'

      Col
    ------
   10062034
      .
      .
      .

Есть ли способ объединить WHEN с substr (или любой другой функцией) в контрольном файле?

Я старался WHEN (substr(Col,3,2)='06') но это не сработало.

2 ответа

Решение

Нет, синтаксис для WHEN пункт довольно ограничительный; см. http://docs.oracle.com/cd/B14117_01/server.101/b10825/ldr_control_file.htm. Вы можете ограничить только на основе целого поля, или на основе конкретных позиций символов. Тем не менее, если вы используете фиксированный формат, то вы можете выразить substr(Col,3,2) как диапазон позиций персонажа, и это будет работать. Например, если Col начинается с символа #20, затем вы можете использовать WHEN (22:23) = '06', Но если вы используете бесплатный формат, как FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'тогда вы вообще не будете знать смещение символа Col,

Вы можете комбинировать When с другой функцией, как ваш код:

CASE substr(col,3,2)

WHEN '06' THEN
-- Do st
ELSE
-- Do st
END

НТН.

Другие вопросы по тегам