mam tej tabeliKorzystanie Java do wyszukiwania danych wykorzystując część wiersza w bazie danych programu Microsoft Access
I używam następujący kod do pobierania danych z moim stole że zwraca wszystkie Angielskie słowa to kurdyjski wyraz zawiera بةرز
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"));
}
}
}
Wszystko działa dobrze, wyświetla wszystkie angielskie słowa, które chcę.
Mój problem polega na tym, że kiedy otrzymuję korespondujące słowo kurdyjskie, nie wypisuję całej komórki. To po prostu drukuje بةرز,
Na przykład wyjście poprzedniego kod powinien być:
aesthete
بةرز ، جوانىثةرست
aether
زوَر ناسك ، بةرز ، ثيروَز ، ئاسمانى
affair
بةرز
ale drukuje
aesthete
بةرز
aether
بةرز
affair
بةرز
Co mogę zrobić, aby uzyskać dane wyjściowe, które chcę?
Zauważ, że używam UCanAccess
dla mojego połączenia z bazą danych,
jestem w stanie odtworzyć problemu przy użyciu UCanAccess 3.0.2. Skopiowałem i wkleiłem Twoje przykładowe dane do tabeli dostępu, a następnie skopiowałem i wkleiłem twój kod do projektu Eclipse. Kiedy go uruchomię, jedyny pasujący wiersz to "romans". –
Czy chcesz nagrać mój problem z wideo i przesłać go na YouTube? –
Co mają zrobić twoje regex? Co robi "[. ] * [: ,,] + [] * "znaczy dla ciebie? Dla mnie oznacza sekwencję znaków ':', ',' lub ',' opcjonalnie poprzedzoną spacjami lub kropkami i/lub spacjami. W połączeniu z kotwicą '^', oznacza to, że nie jest dozwolony żaden inny tekst, więc z pewnością nie będzie pasował do tego, co jest przed pierwszymi 2 czerwonymi kółkami. --- Ponadto, ponieważ pokazane dane mają "Affair" zaczynając od dużej litery, a twoje dane wyjściowe zaczynają się od małej litery, * nie * czytasz * dane *. – Andreas