3

現在、私のデータベースは文字セットのLatin1意味です

SELECT * FROM TABLE MATCH(column1) AGAINST('"words here"' IN BOOLEAN MODE)

機密性の低い検索のみを返します。ただし問題は、データベースが大文字と小文字を区別しない検索で検索されることです。同じテーブルを使用して検索できるように、これを解決する方法はありますか? latin1_binユーザーの検索で大文字と小文字が区別される場合、クエリを実行するために文字セットを使用してテーブルを作成する必要がありますか。

4

1 に答える 1

1

私の頭に浮かぶ素朴なアプローチは、テキストを 2 つの異なる列 (2 つの異なるインデックスを持つ) に 2 回格納することです。1 つはlatin1_bin(大文字と小文字を区別する検索用)、もう1 つは (latin1_*_ci大文字と小文字を区別しない検索用) です。

補足:

  1. これは照合の問題であり、文字エンコーディング (別名 charset) ではありません
  2. バイナリ照合順序 ( などlatin1_bin) を使用すると、アクセント付きの文字をアクセントのない対応する文字とは異なるものとして扱うなど、他の副作用があります (例: "é" <> "e")。
于 2014-05-22T09:28:32.707 に答える