1

大文字と小文字が異なる文字列は同じと見なされますが、次のような他のルールはありません。

a = a

等々。

ここで適切な照合を見つけようとしました: http: //www.collat​​ion-charts.org/mysql60/by-charset.htmlしかし、探している照合が存在しないようです。

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

ご提案ありがとうございます。

4

4 に答える 4

1

私はアドバイスを与えられました:単に次のようなテーブルを持ってください: id, word, word_in_lowercase ..データが冗長であることは事実ですが、それ以外の場合は私のすべてのニーズを満たします。

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

于 2009-08-23T09:11:48.900 に答える
0

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

于 2009-08-10T12:47:13.413 に答える
0

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

于 2009-08-10T12:51:06.817 に答える
0

検索クエリに MySQL の全文検索機能を使ってみませんか?

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

mysql.com の仕様を読んで明確にしてください -リンク

一例:

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

そして、これは大文字と小文字を区別せずに実行されます。

于 2009-08-10T12:55:08.627 に答える