Условная загрузка с Sql * Loader - PullRequest
0 голосов
/ 03 декабря 2011

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

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

      Col
    ------
   10062034
      .
      .
      .

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

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

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

Нет, синтаксис для предложения 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.

0 голосов
/ 03 декабря 2011

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

CASE substr(col,3,2)

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

HTH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...