-1

英語とハンガリー語のテキストを含むUTF-8でエンコードされたMySQLデータベースがあります。

私は検索機能に取り組んでおり、1つのことを除いて結果は受け入れられます:

「á」、「é」、「í」、「ó」、「ö」、「ő」、「ú」、「ü」、「ű」を含む文字列を検索すると、それらのすべての出現が表示されますが、 「a」、「e」、「i」、「o」、「u」の結果。この方法では、多くの不要なレコードが生成されるため、検索は正確ではありません。たとえば、「bár」のすべての「バー」が取得されます(これは明らかに同じではありません)。

私は簡単な方法でLIKEによる検索を行いました(単語全体の検索のみまたは正確な語順のバリエーションはたくさんありますが、ベースは同じです):

SELECT * FROM table WHERE coloumn LIKE 'word'

どうすれば不要な結果を回避できますか?私はSQLの専門家ではなく、このような検索を行ったことがないので、少し助けが必要です...

ありがとう!

4

1 に答える 1

0

これが機能するかどうかはわかりませんが、使用してみてください

CAST(value1 AS BINARY) = CAST(value2 AS BINARY)

直接比較を行い、

POSITION( CAST(value1  as BINARY) IN CAST(value2  as BINARY))

value1 が value2 の部分文字列かどうかを確認します。
MySQL はそれらにインデックスを使用しないため、おそらく通常の .xml と一緒に使用する必要がありますWHERE

于 2012-07-27T18:45:21.090 に答える