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

MySQLでの並べ替え/順序付け

    次のように、それらを構成要素に分割できます。

    SELECT REPLACE(SUBSTRING(SUBSTRING_INDEX(prog_id, '.', 1),
           LENGTH(SUBSTRING_INDEX(prog_id, '.', 1 -1)) + 1),
           '.', '') AS id1,
           REPLACE(SUBSTRING(SUBSTRING_INDEX(prog_id, '.', 2),
           LENGTH(SUBSTRING_INDEX(prog_id, '.', 2 -1)) + 1),
           '.', '') AS id2,
           REPLACE(SUBSTRING(SUBSTRING_INDEX(prog_id, '.', 3),
           LENGTH(SUBSTRING_INDEX(prog_id, '.', 3 -1)) + 1),
           '.', '') AS id3
    FROM programs
    ORDER BY CAST(id1 AS INT(4)), CAST(id2 AS INT(4)), CAST(id3 AS INT(4))
    

    最善の方法は、yoda2kが言うように追加のフィールドを作成することですが、そのアクセス権がない場合は、上記を使用できます。

    これを次のような関数にカプセル化できます:

    CREATE FUNCTION SPLIT_STR(
      x VARCHAR(255),
      delim VARCHAR(12),
      pos INT
    )
    RETURNS VARCHAR(255)
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
           LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
           delim, '');
    

    次に、次のことを行います:

    SELECT SPLIT_STR(prog_id, '.', 1) AS id1,
       SPLIT_STR(prog_id, '.', 2) AS id2,
       SPLIT_STR(prog_id, '.', 3) AS id3,
    FROM programs
    ORDER BY CAST(id1 AS INT(4)), CAST(id2 AS INT(4)), CAST(id3 AS INT(4))
    


    1. java.util.DateをUTC/GMTタイムゾーンのMySQLタイムスタンプフィールドに保存するにはどうすればよいですか?

    2. postgresデータベースの文字エンコードをどのように変更しますか?

    3. QUARTER()の例– MySQL

    4. MySQLの日付比較機能