2009-08-10 6 views
1

は、私は(私のバージョンは5.0である)場合には異なる文字列が同じと考えられているが、同様に他のルールがそこにいるんところMySQLでの照合を見つけようとしていますに。 追加ルールなしで大文字と小文字を区別しない検索ですか?</p> <p>ので=</p> <p>á:

は、私がここに適切な照合を見つけることを試みた: http://www.collation-charts.org/mysql60/by-charset.htmlが、私が探しているの照合が存在しないようです。

SQLクエリでは使用できません:SELECT ... WHERE lower(column1)= lower(column2)column1とcolumn2のインデックスが使用されておらず、クエリがひどく遅いためです。

ありがとうございました!

答えて

1

私は助言を与えられました:単にid:word、word_in_lowercaseのようなテーブルを持っています。データは冗長ですが、そうでなければ私の必要をすべて満たしています。

word_in_lowercaseの自動更新は、トリガーまたは追加のプログラミングを使用して行うことができます。

+0

http://stackoverflow.com/questions/234591/upper-vs-lower-case/234751#234751によると、単純な「小文字の」比較は一部の言語では間違っている可能性があります – akavel

0

問題のテーブルに設定されている照合のタイプは何ですか?私は現在、大文字小文字を区別しないので、utf8_hungarian_ciで多くのテーブルを使用しています。

+0

私はチェコ語のために必要ですが、必要なのはA = aなどですが、áはAと等しくないため重要ではありません。 –

0

http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.htmlは、非バイナリ文字列がデフォルトで大文字と小文字を区別しないことを示します。 lower()を使わなければ正常に動作していないことをテストしましたか?

+0

文字列が非バイナリの場合照合順序を設定する必要があり、á= aなどの規則を必要としない場合はどのような照合順序にする必要がありますか。 –

+0

私はあなたの意見を見ます。私はこれがデフォルトの文字セットで発生したことに気づいていませんでした。 – Cahlroisse

0

検索クエリにMySQLの全文検索機能を使用しないのはなぜですか?

あなたのようなタスクの場合は、MATCH AGAINST関数を使用しています。

それを明確にするためにmysql.comで仕様を読む - Link

一例:

SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE) 

そして、これは大文字と小文字の区別が実行されます。

+0

私はそれを試してみます。ありがとうございました! –

+0

ようこそ。私が試したことのない唯一のものは、mysqlが例えば " "a"や "á"のようなものです。 あなたの経験を共有するなら嬉しいです。 ps。あなたの受け入れられた答えをマークすることを忘れないでください;-) – ChrisBenyamin

関連する問題