真的很奇怪。
我有一个Oracle函数
function highlightDesc(desc IN VARCHAR2, keyword IN VARCHAR2) return VARCHAR2
return 'paragraphtag' ||
REPLACE(desc, keyword, 'boldtag' || keyword || 'boldtag') || 'paragraphtag';
以这种方式调用
select a.*, highlightDesc(a.Desc) as highlightedDesc
from tablea a
奇怪的是,当我从sqlplus或plsql开发人员中调用此sql时,highlightDesc列包含所有正确的标记。
当我从Junit调用它时,我得到了所有正确的标记。
当我使用oracle瘦驱动程序从运行在jboss(winxp / redhat)上的struts2应用程序调用它时, 我得到了封闭的paragraphtag标签和内容,但没有粗体标签。
这有意义吗? 有什么想法吗?
编辑:
我道歉,我无法从工作中登录到SO。拉姆,我知道。
我使用commons dbutils queryrunner(BeanListHandler)从java类执行sql。 我的操作除了调用我的服务类并设置值之外什么都不做。
我查看了src for queryrunner,它最终调用了一个名为BeanProcessor的类,它通过rs.getString(index)将highlightDesc列作为String获取;
我认为这可能是编码问题???所以我试图改变jvm编码和jboss编码,但它没有效果。 我想我可能会看到在oracle中转换字符集是否有任何影响?
感谢。
答案 0 :(得分:1)
最有可能的是,keyword
未正确传递给函数,因此REPLACE
函数无效。