Oracle:在应用程序中查询 returns \u0001,在 SQL 开发人员中运行良好

Oracle: Query returns \u0001 in application, works fine in SQL Developer

我在 SELECT 查询中有以下列:

SELECT INITCAP(RTRIM(REGEXP_replace(name, '(^.+) [0-9\.]{1,}%.*', ''))) AS name,  

这将删除名称字段中的任何百分比和后面的内容。例如:

'MY_NAME 10% Test' 会给出 'My_name'

有些行有这个 % 条目,有些没有。对于那些没有它的人,它只会 return 带有 initcaps 的原始值:MY_Name -> My_name.

当 运行 在 SQL Developer 中查询时,这工作得很好。然而,当我在实际应用程序中 运行 它时 (php5, oci),所有带有 % 符号的值都被 return 编辑为 unicode 代码点 \u0001.

数据库和连接的编码都是AL32UTF8

导致此问题的原因是什么?我该如何解决?

编辑:

这个问题肯定是 regexp_replace 函数引起的,就像

REGEXP_replace(name, '(^.+) [0-9\.]{1,}%.*', ''))) AS name

导致同样的问题。

在应用程序中,SQL 在字符串中,因此必须转义正则表达式中的所有反斜杠 \,例如。双反斜杠 \。例如:

SELECT INITCAP(RTRIM(REGEXP_replace(name, '(^.+) [0-9\.]{1,}%.*', '\1'))) AS name,