2015-10-23 23 views
6

内の行の一部を使用してデータを検索するためのJavaを使用して、私は、この表Microsoft Accessデータベース

enter image description here

そして、私はすべてを返す私のテーブル からデータを取得するには、次のコードを使用していますがありますそのクルド語だから、それが正常に動作しますبةرز

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を使用しています

注意、すべてのための

+0

内のいくつかの変更と、それを解決しました3.0.2。サンプルデータをコピーしてAccessテーブルに貼り付け、コードをコピーしてEclipseプロジェクトに貼り付けました。私がそれを実行するときに一致する唯一の行は "事件"です。 –

+0

ビデオで問題を記録し、YouTubeにアップロードしたいですか? –

+2

あなたの正規表現は何をする予定ですか? '[。 ] * [:,,] + [] * 'あなたにどういう意味ですか?私にとって、 ':'、 '、'、 '、'の文字列の前に空白やピリオドが続くか、スペースの後に続くことを意味します。アンカー '^'と組み合わせると他のテキストは許可されないので、最初の2つの赤い円の前のものとはまったく一致しません。 ---また、表示されているデータに大文字で始まる「Affair」があり、出力に小文字で始まるものがあるため、あなたは*その*データを読み込んでいません。 – Andreas

答えて

1

タンク、私は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")); 
     } 
    } 
}