ホームページ >データベース >mysql チュートリアル >MySQL の `ORDER BY` 句で英数字データを正しくソートするにはどうすればよいですか?
MySQL では、'Order By' 句は指定されたカラムの値に基づいてデータを並べ替えます。ただし、英数字データを扱う場合、デフォルトの並べ替え方法では最初の桁が優先されるため、誤った順序付けが行われます。
たとえば、次のデータがあるとします。
1 2 3 4 5 6 7 8 9 10 11 12
そしてクエリを実行します。
select * from table order by xxxxx asc
結果は次のように並べ替えられます。
1 10 11 12 2 3 4 5 6 7 8 9
これは、後続の文字に関係なく、順序が最初の桁によって決定されるためです。
英数字データを正しく並べ替えるには、次のようにします。さまざまなトリックを使用できます:
Bin Way を使用した英数字の並べ替え:
SELECT tbl_column, BIN(tbl_column) AS binray_not_needed_column FROM db_table ORDER BY binray_not_needed_column ASC , tbl_column ASC
自然並べ替え:
SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric
英数字と混合した数値の並べ替え:
SELECT version FROM version_sorting ORDER BY CAST(version AS UNSIGNED), version;
これらのトリックを採用することで、英数字データが確実に並べ替えられるようになります。正しく、項目の望ましい順序を維持します。
以上がMySQL の `ORDER BY` 句で英数字データを正しくソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。