使用java通过使用microsoft access数据库中的部分行来搜索数据

Ham*_*mad 6 java regex prepared-statement ucanaccess

我有这张桌子

在此输入图像描述

我正在使用以下代码从我的表中检索数据,该数据返回其库尔德语单词包含的所有英语单词بةرز

targetText="????";
try (PreparedStatement ps = conn.prepareStatement(
"SELECT English,Kurdish FROM Info " +
"WHERE Kurdish = ? " +
"OR REGEXP_MATCHES(Kurdish, ?) " +
"OR REGEXP_MATCHES(Kurdish, ?) " +
"OR REGEXP_MATCHES(Kurdish, ?) ")) {
   ps.setString(1, targetText);
   ps.setString(2, "^[. ]*" + targetText+ "[ ]*[:?,]+[ .]*$");
   ps.setString(3, "^[. ]*[:?,]+[ ]*" + targetText+ "[. ]*$");
   ps.setString(4, "^[. ]*[:?,]+[ ]*" + targetText+ "[ ]*[:?,]+[  .]*$");
   try (ResultSet rSet = ps.executeQuery()) {
      while (rSet.next()) {
         System.out.println(rSet.getString("English"));
         System.out.println(rSet.getString("Kurdish"));
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

所以它工作正常,它打印我想要的所有英语单词.
我的问题是,当我得到相应的库尔德语单词时,它不会打印完整的单元格.它只是打印بةرز,

例如,前面代码的输出应该是:

aesthete
???? ? ??????????
aether
???? ???? ? ???? ? ?????? ? ???????
affair
???? 
Run Code Online (Sandbox Code Playgroud)

但它打印

aesthete
???? 
aether
???? 
affair
???? 
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能获得我想要的输出?

请注意,我UCanAccess用于我的数据库连接,

Ham*_*mad 1

所有人的坦克,我只需在 regx 中进行一些更改就解决了这个问题

\n\n
targetText="\xd8\xa8\xd8\xa9\xd8\xb1\xd8\xb2";\ntry (PreparedStatement ps = conn.prepareStatement(\n   "SELECT English,Kurdish FROM Info " +\n   "WHERE Kurdish = ? " +\n   "OR REGEXP_MATCHES(Kurdish, ?) " +\n   "OR REGEXP_MATCHES(Kurdish, ?) " +\n   "OR REGEXP_MATCHES(Kurdish, ?) ")) {\n   ps.setString(1, targetText);\n   ps.setString(2, "^" + targetText+ "[ ]*(\xd8\x8c)[.]*");\n   ps.setString(3, "[.]*(\xd8\x8c)[ ]*" + targetText+ "$");\n   ps.setString(4, "[.]*(\xd8\x8c)[ ]*" + targetText+ "[ ]*(\xd8\x8c)[.]*");\n   try (ResultSet rSet = ps.executeQuery()) {\n      while (rSet.next()) {\n         System.out.println(rSet.getString("English"));\n         System.out.println(rSet.getString("Kurdish"));\n      }\n   }\n}\n
Run Code Online (Sandbox Code Playgroud)\n