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,
我在 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,