NULLIF в SQL Loader для сравнения строкового значения

У меня есть файл с простыми строками, которые я хочу загрузить в таблицу с помощью sql loader.

Однако есть столбец, содержащий значения, которые я хочу исключить:

эр

123;Código Postal *;HH;456
523;Código Postal *;HI;459
723;Código Postal *;HM;450

Столбец, который я хочу исключить и присвоить NULL, является значением "Código Postal *".

Я хочу изменить свой контрольный файл, чтобы исключить это значение, но это невозможно.

Я использовал в контрольный файл:

 EC_CONS_ZIP_CODE  "DECODE(:EC_CONS_ZIP_CODE,'Código Postal%',NULL,:EC_CONS_ZIP_CODE)"

Но не работает, потому что у меня есть специальный символ ("*" и "ó")

Есть ли способ избежать такого характера персонажа, чтобы использовать его или другим способом?

Можно ли назначить шаблон для этого слова с помощью файла управления?

С уважением!!

2 ответа

Решение

Установите набор символов utf8 в контрольном файле

CHARACTERSET UTF8

Другой способ заключается в использовании регулярных выражений

EC_CONS_ZIP_CODE  " REGEXP_REPLACE(:EC_CONS_ZIP_CODE,'C.digo Postal.*','')"

Или попробуйте с определенной кодировкой Unicode для (00F3)

EC_CONS_ZIP_CODE  " REGEXP_REPLACE(:EC_CONS_ZIP_CODE,'C' || unistr('\00F3')|| 'digo Postal.*','')"

Отметить этот столбец как FILLER в контрольном файле, чтобы игнорировать это поле в файле и сохранить накладные расходы на вызов REGEXP_REPLACE для каждой строки. Oracle заполнит NULL для вас:

...
EC_CONS_ZIP_CODE FILLER,
... 
Другие вопросы по тегам