MySQL "Order By" - 英数字データを正しく並べ替える
問題:
使用時MySQL の英数字データを含む "ORDER BY" 句では、ソートが優先されることがよくあります。最初の桁が間違っているため、順序が正しくなくなります。たとえば、次のデータ:
1 2 3 4 5 6 7 8 9 10 11 12
は次のようにソートされます:
1 10 11 12 2 3 4 5 6 7 8 9
解決策:
ソートにはいくつかの方法があります。次のような英数字データが正しく含まれています:
1.英数字の並べ替え
このメソッドは、BIN() 関数を使用して英数字データをバイナリ表現に変換し、並べ替えに使用します。
SELECT * FROM table ORDER BY BIN(name) ASC, name ASC;
2 。自然な並べ替え
自然な並べ替えでは、数値と文字の両方を考慮して、値を 1 文字ずつ比較します。これは、カスタマイズされた比較関数を使用するか、そのような機能を提供する外部ライブラリに依存することによって実現できます。
SELECT * FROM table ORDER BY name DESC; -- Using a customized comparison function
3.英数字が混在した数値の並べ替え
数値と英数字の混在を扱う場合、CAST() 関数を使用して数値を符号なし整数に変換できます。並べ替え。
SELECT * FROM table ORDER BY CAST(name AS UNSIGNED), name;
4.長さベースの並べ替え
このメソッドは、各値の長さに基づいてデータを並べ替えます。短い値が最初に表示されます。
SELECT * FROM table ORDER BY LENGTH(name), name;
注:使用する具体的なアプローチは、特定の要件と MySQL 環境内の利用可能なリソースによって異なる場合があります。
以上がORDER BY を使用して MySQL で英数字データを正しくソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。