SQL 加载程序中的 NULLIF 用于比较字符串值

NULLIF in SQL Loader to compare a string value

我有一个包含简单行的文件,我想使用 sql 加载程序将其上传到 table。

但是,有一列包含我想排除的值:

e.r.

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)"

但不起作用,因为我有一个特殊字符(“*”和“ó”)

有没有办法避免使用这种字符或其他方式?

是否可以使用控制文件为这个词指定一个模式?

问候!!

在控制文件中设置字符集为utf8

CHARACTERSET UTF8

另一种方法是使用正则表达式

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

或尝试使用 ó (00F3) 的特定 Unicode 编码

EC_CONS_ZIP_CODE  " REGEXP_REPLACE(:EC_CONS_ZIP_CODE,'C' || unistr('[=12=]F3')|| 'digo Postal.*','')"

在控制文件中将该列标记为 FILLER 以忽略文件中的该字段并节省为每一行调用 REGEXP_REPLACE 的开销。 Oracle 将为您填充 NULL:

...
EC_CONS_ZIP_CODE FILLER,
...