使用 java 通过使用 Microsoft Access 数据库中的部分行来搜索数据
Using java for searching for data by using part of the row in microsoft access database
我有这个table
我正在使用以下代码从我的 table 中检索数据
那returns它的库尔德语单词中包含的所有英文单词 ب⑩رò
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"));
}
}
}
所以它工作正常,它打印了我想要的所有英文单词。
我的问题是,当我得到相应的库尔德语单词时,它不会打印完整的单元格。它只打印 ب⑩رò,
例如前面代码的输出应该是:
aesthete
بةرز ، جوانىثةرست
aether
زوَر ناسك ، بةرز ، ثيروَز ، ئاسمانى
affair
بةرز
但是它打印
aesthete
بةرز
aether
بةرز
affair
بةرز
我该怎么做才能得到我想要的输出?
请注意,我使用 UCanAccess
进行数据库连接,
谢谢大家,我只是在 regx 中做了一些改动就解决了这个问题
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"));
}
}
}
我有这个table
我正在使用以下代码从我的 table 中检索数据 那returns它的库尔德语单词中包含的所有英文单词 ب⑩رò
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"));
}
}
}
所以它工作正常,它打印了我想要的所有英文单词。
我的问题是,当我得到相应的库尔德语单词时,它不会打印完整的单元格。它只打印 ب⑩رò,
例如前面代码的输出应该是:
aesthete
بةرز ، جوانىثةرست
aether
زوَر ناسك ، بةرز ، ثيروَز ، ئاسمانى
affair
بةرز
但是它打印
aesthete
بةرز
aether
بةرز
affair
بةرز
我该怎么做才能得到我想要的输出?
请注意,我使用 UCanAccess
进行数据库连接,
谢谢大家,我只是在 regx 中做了一些改动就解决了这个问题
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"));
}
}
}