タイプがあるorder by nameステートメントを使用している場合、サーバーのMySQLは、フィールドの最初の20文字が同じである場合、レコードを適切な順序で配置しないようです。MySQLは21文字をまったく気にしないようです。降順で並べ替えるときに、実際には同じ誤った順序が保持されます。namevarchar(255)name
別のMySQLインストールでテーブルを複製しましたが、すべて問題ありません。しかし、サーバーでのこの制限についてはどうすればよいですか?共有ホスティングを使用しているため、MySQLを再インストールできません。
更新:nameフィールドはどのインデックスにも属しておらず、このフィールドにインデックスを作成しても役に立ちません。
MySQLのバージョンは5.1.55、エンジンはMyISAMです。
更新2:元々cp1251_general_ci照合を使用していましたが、他の照合を試したところ、まったく同じ結果が得られました。私が使用した文字列'123456789012345678901'/'123456789012345678902'と'abcdefghijklmnopqrstauvwxyz'/'abcdefghijklmnopqrstbuvwxyz'、同じ結果。
順序付けでは、21日以降のすべての文字が考慮されていないようですが、それ以外の場合は正常に機能しています。
興味深いことに、21番目の文字を使用する場合は重要ですが、22番目の文字は重要ではありません。ORDER BY substring(name, 2)