1

同じクエリ文字列でCOLLATE指定する方法はありますか?MATCH() AGAINST()私はこれを手に入れようとしています。

SELECT * FROM table  WHERE COLLATE latin1_general_cs MATCH(column) AGAINST('string')

私はそれがうまくいかないことを知っています、ほんの一例です。COLLATE用量がうまくいかない場合MATCH。大文字と小文字を区別するクエリと大文字と小文字を区別しないクエリの両方が必要なため、すべてのクエリで大文字と小文字を区別するにはどうすればよいですかMATCH() AGAINST()

4

2 に答える 2

0

これを行う方法を理解しました。@Ollie Jonesが言ったように、大文字と小文字を区別する照合を使用して、すべてのデータを新しい列にコピーしました。私の場合latin1_general_cs

しかし、FULLTEXTインデックスは混合照合を持つことができないためです。FULLTEXT2 つのインデックスが必要です。大文字と小文字を区別しない列latin1_general_ciに 1 つ ( )、大文字と小文字を区別する列に 1 つ ( latin1_general_cs)。

于 2013-01-02T19:27:12.897 に答える
0

いいえ、残念ながら

1 つのテーブル内での複数の文字セットの使用はサポートされていますが、FULLTEXT インデックスのすべての列は同じ文字セットと照合を使用する必要があります。

全文MATCH() AGAINST構文には、照合順序を指定する修飾子はありません。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-restrictions.html

column別の照合順序で列のコピーを維持できます。

于 2013-01-02T15:28:04.483 に答える