【发布时间】:2015-07-27 14:41:47
【问题描述】:
我在 SELECT 查询中有以下列:
SELECT INITCAP(RTRIM(REGEXP_replace(name, '(^.+) [0-9\.]{1,}%.*', '\1'))) AS name,
这会删除任何百分比以及名称字段中随后出现的内容。例如:
'MY_NAME 10% Test' 会给'My_name'
有些行有这个 % 条目,有些则没有。对于那些没有它的人,它只会返回带有 initcaps 的原始值:MY_Name -> My_name。
在 SQL Developer 中运行查询时,这非常有效。但是,当我在实际应用程序(php5、oci)中运行它时,所有带有 % 符号的值都作为 unicode 代码点 \u0001 返回。
编码是AL32UTF8,数据库和连接都是。
是什么导致了这个问题?我该如何解决?
编辑:
问题肯定来自 regexp_replace 函数,就像
REGEXP_replace(name, '(^.+) [0-9\.]{1,}%.*', '\1'))) AS name
导致同样的问题。
【问题讨论】:
标签: regex oracle replace character-encoding