タイプがあるorder by name
ステートメントを使用している場合、サーバーのMySQLは、フィールドの最初の20文字が同じである場合、レコードを適切な順序で配置しないようです。MySQLは21文字をまったく気にしないようです。降順で並べ替えるときに、実際には同じ誤った順序が保持されます。name
varchar(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)