0

次のようなMySQLデータベースに「statuses」という名前のテーブルがあります。

| "id" (int) | "text" varchar(50) | "hex_color" varchar(10) |
-------------------------------------------------------------
| 1          | EJ PÅBÖRJAD        | #FF3300                 |
| 2          | ARBETE PÅGÅR       | #FFFF00                 |
| 3          | AVVAKTAR           | #80F0FF                 |
| 4          | ÅTGÄRDAD           | #6DE37A                 |
-------------------------------------------------------------

これが私のJDBC Javaコードです:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(statement);

while(rs.next()){
   Long pid = rs.getLong(1);
   String ptext = rs.getString(2);
   String hex_color = rs.getString(3);

   status = new Statuses(pid, ptext, hex_color);
}

いつstatement

SELECT id, text, hex_color FROM statuses WHERE text = 'EJ PÅBÖRJAD'- 1件の結果

SELECT id, text, hex_color FROM statuses WHERE text = 'ARBETE PÅGÅR'- 0件の結果

SELECT id, text, hex_color FROM statuses WHERE text = 'AVVAKTAR'- 1件の結果

SELECT id, text, hex_color FROM statuses WHERE text = 'ÅTGÄRDAD'- 1件の結果

2 番目のステートメントで結果が 0 になるのはなぜですか? 「mysqlコマンドライン」で自分で実行すると、1つの結果が得られます! 文字セットの問題を除外する同じ文字セット (UTF-8) を使用していることを確認しました。

誰かがこの問題について私を助けてくれますか?

よろしく、クライド

4

2 に答える 2

1

あなたはそれを絶対に確信していますか

  • 'ARBETE PÅGÅR'またはのコピー アンド ペースト エラーを起こしていない
  • データベースの前後に余分なスペースまたはその他の印刷できない文字が含まれています'ARBETE PÅGÅR'

ワイルドカードで囲んでみてください。SELECT * FROM statuses WHERE text LIKE '%ARBETE%PÅGÅR%'それが違いを生むかどうかを確認しますか?

乾杯、

于 2012-11-02T11:37:25.517 に答える