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

データがバイトKBMBGBのmysql列を並べ替える方法は?

    実際には、すべてのデータを共通の単位(バイトなど)に変換するか、「測定単位」を含む列を追加して、サイズ列自体を数値のままにしておく必要があります。

    そうは言っても、GB / MB/KBまたはBで終わるデータに対して以下が機能するはずです。

    select size
      from t
     order 
        by case when size like '%GB' then power(1024, 3) * substr(size, 1, length(size) - 2)
                when size like '%MB' then power(1024, 2) * substr(size, 1, length(size) - 2)
                when size like '%KB' then power(1024, 1) * substr(size, 1, length(size) - 2)
                when size like '%B'  then                  substr(size, 1, length(size) - 1)
            end desc;
    
    
    +-------+------------+
    | size  | bytes      |
    +-------+------------+
    | 1GB   | 1073741824 |
    | 10MB  | 10485760   |
    | 100KB | 102400     |
    | 1000B | 1000       |
    +-------+------------+
    


    1. SQLServerの2つの異なるサーバーからデータを選択する

    2. SQLテーブルの列で大小の関連データを分離する方が効率的ですか?

    3. データベースにテーブルが見つかりません

    4. データベース内のすべてのテーブルのドロップテーブルステートメントを生成する方法-SQLServer/T-SQLチュートリアルパート48