2017-11-19 6 views
0

私はラテックススニペットのMySqlデータベースを持っています。各スニペットには、通常のテキストとラテックスのコマンドが含まれています。コマンドの前にはバックスラッシュ\が付いています。私はテキストが大文字小文字を区別しないようにこれらのスニペットを検索したいと思いますが、コマンドは大文字と小文字を区別しません。したがって、vectorを選択すると、テキストにvectorまたはVectorのいずれかが含まれ、\Vectorを選択すると\vectorが返されません。SQLは大文字と小文字を区別しないテキストを選択しますが、ラテックスの機能名は選択しません

答えて

0

あなたの質問は照合についてです。表の列に照合設定があります。たとえば、utfmb4_general_ciまたはutf8mb4_binです。あなたがutf8_binを使用している場合は、それらの最初は

... ... vector行が... Vectorを両方含む得られます。この

WHERE col LIKE '%vector%' 

のような検索を意味し、大文字と小文字を区別しないで...と(バイナリ一致、大文字と小文字を区別)照合、その検索除外... Vector ...

あなたはそうのように、フィルタ句で使用する照合を指定することができます。

WHERE col LIKE '%Vector%' COLLATE utf8_bin; 
を210

とすると、MySQLは必要な照合を使用します。 に指定されていない場合、照合(通常のケース)では、MySQLはテーブルまたはカラムを作成した時点で指定された照合を使用します。

明示的に照合順序を指定し、列の照合と異なる場合、MySQLの照会プランナーは列の索引を使用して照会を満たすことができません。だからそれは遅くなるかもしれません。もちろん、フィルタ節のパターンcolumn LIKE '%value%'(先頭に%)もインデックスを使用できません。

関連する問題