首页 > 解决方案 > 当查询输入包含德语字符时,Oracle DB 不返回结果

问题描述

我今天在我的 Oracle DB 上遇到了一个问题。

我有一个已部署的应用程序,在一个用例中,会触发类似于以下内容的查询:

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 环境中将 Eclipse 中的代码作为 Java 应用程序运行,我会找到所需的结果。但是,部署在指向同一数据库的 Tomcat 上的相同代码返回空结果集。

但是,如果我更改查询以避免使用德语字符,则会获取结果,即

select * from t_my_table where UPPER(col_name) like UPPER('%ntema%');

将获取所需的结果。所以问题只出在这些字符上。

此外,当直接在 SQL 开发人员上运行查询时,它们总是在工作。

这里可能出了什么问题。老实说,我不知道要尝试什么。有人可以建议任何解决方案。

标签: javasqloraclehibernate

解决方案


推荐阅读