2015-10-23 60 views
6

我有這個表用java通過在Microsoft Access數據庫使用該行的一部分搜索數據

enter image description here

,我使用下面的代碼從我的表 返回所有的檢索數據英語單詞包含其庫爾德語字母بةرز

因此,它工作正常,它打印所有我想要的英文單詞。
我的問題是,當我得到相應的庫爾德詞它不打印完整的單元格。它只是打印بةرز,

例如前面的代碼的輸出應該是:

aesthete 
بةرز ، جوانىثةرست 
aether 
زوَر ناسك ، بةرز ، ثيروَز ، ئاسمانى 
affair 
بةرز 

但它打印

aesthete 
بةرز 
aether 
بةرز 
affair 
بةرز 

我能做些什麼來獲得我想要的輸出?

請注意,我用的UCanAccess我的數據庫連接,

+0

我不能重新使用UCanAccess您的問題中的一些變化解決了它3.0.2。我將您的示例數據複製並粘貼到Access表中,然後將您的代碼複製並粘貼到Eclipse項目中。當我運行它時,唯一匹配的行是「事情」。 –

+0

你想讓我在視頻中記錄我的問題並將它上傳到YouTube嗎? –

+2

你的正則表達式應該做什麼?什麼'[。 ] * [:,,] + [] *'對你意味着什麼?對我來說,這意味着一系列':',','或','字符可選地以空格或句點開頭,或者後面跟空格。結合'^'錨點,這意味着不允許其他文本,所以它絕對不會匹配前兩個紅色圓圈之前的內容。 ---另外,由於顯示的數據具有以大寫字母開頭的「Affair」,並且您的輸出以小寫字母開頭,因此您不*讀取*數據。 – Andreas

回答

1

坦克的所有,我剛纔用至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")); 
     } 
    } 
}