我今天在Oracle数据库上遇到了一个问题。
我有一个已部署的应用程序,在一种用例中,引发了类似于以下内容的查询:
select * from t_my_table where col_name like '%Häntema%';
要使选择忽略大小写,查询的编码为:
select * from t_my_table where UPPER(col_name) like UPPER('%Häntema%');
数据字符串未进行硬编码,而是将Hibernate参数设置为toUpperCase();
现在奇怪的是,如果我在Spring Boot环境中以Java应用程序的形式从Eclipse运行此代码,则会找到所需的结果。但是,部署在Tomcat上的指向相同数据库的相同代码将返回空结果集。
但是,如果我更改查询以避免德语字符(即
),则会提取结果select * from t_my_table where UPPER(col_name) like UPPER('%ntema%');
将获取所需的结果。因此,问题仅在于此类字符。
另外,当直接在SQL开发人员上运行查询时,它们始终可以正常工作。
这里可能出了什么问题。老实说,我没有任何尝试的线索。有人可以提出任何解决方案吗?