我在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
导致相同的问题。
在应用程序中,SQL位于字符串中,因此\
必须对正则表达式中的所有反斜杠进行转义,例如。双bachslash \\
。例如:
SELECT INITCAP(RTRIM(REGEXP_replace(name, '(^.+) [0-9\\.]{1,}%.*', '\\1'))) AS name,
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句