sql >> データベース >  >> RDS >> Mysql

MySQLの「順序付け」-英数字を正しく並べ替える

    人々はこれを行うためにさまざまなトリックを使用します。私はグーグルで検索し、それぞれが異なるトリックに従っているいくつかの結果を見つけました。それらを見てください:

    編集:

    将来の訪問者のために、各リンクのコードを追加しました。

    MySQLでの英数字の並べ替え

    与えられた入力

    1A 1a 10A 9B 21C 1C 1D

    期待される出力

    1A 1C 1D 1a 9B 10A 21C

    クエリ

    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
    
    -----------------------
    
    Cast Way
    ===================================
    SELECT 
    tbl_column, 
    CAST(tbl_column as SIGNED) AS casted_column
    FROM db_table
    ORDER BY casted_column ASC , tbl_column ASC
    

    MySQLでの自然順付け

    与えられた入力

    Table: sorting_test
     -------------------------- -------------
    | alphanumeric VARCHAR(75) | integer INT |
     -------------------------- -------------
    | test1                    | 1           |
    | test12                   | 2           |
    | test13                   | 3           |
    | test2                    | 4           |
    | test3                    | 5           |
     -------------------------- -------------
    

    期待される出力

     -------------------------- -------------
    | alphanumeric VARCHAR(75) | integer INT |
     -------------------------- -------------
    | test1                    | 1           |
    | test2                    | 4           |
    | test3                    | 5           |
    | test12                   | 2           |
    | test13                   | 3           |
     -------------------------- -------------
    

    クエリ

    SELECT alphanumeric, integer
           FROM sorting_test
           ORDER BY LENGTH(alphanumeric), alphanumeric  
    

    と混合された数値の並べ替え英数字の値

    与えられた入力

    2a, 12, 5b, 5a, 10, 11, 1, 4b
    

    期待される出力

    1, 2a, 4b, 5a, 5b, 10, 11, 12
    

    クエリ

    SELECT version
    FROM version_sorting
    ORDER BY CAST(version AS UNSIGNED), version;
    

    これがお役に立てば幸いです



    1. UnixtimeをDatetimeSQLに変換する(Oracle)

    2. PostgreSQLのSUM()関数

    3. AzureDataStudioを使用したSQLServerエージェントのジョブ履歴の表示

    4. SQLクエリの結果が期待どおりに戻らないのはなぜですか?