Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyortir/memesan di MySQL

Anda dapat membaginya menjadi bagian-bagian penyusunnya seperti:

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))

Metode terbaik adalah membuat bidang tambahan seperti yang dikatakan yoda2k, tetapi jika Anda tidak memiliki akses itu, Anda dapat menggunakan yang di atas.

Anda dapat merangkumnya menjadi fungsi seperti:

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, '');

Kemudian lakukan:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. menghapus entitas dalam kaskade yang tidak berfungsi dalam relasi ManyToMany

  2. Rails:mysql &postgres secara bersamaan di aplikasi yang sama?

  3. Mysql Bagaimana hanya memilih dari kolom jika kolom ada

  4. Pencarian MySQL Fulltext Boolean Mode mengembalikan terlalu banyak hasil

  5. Mendapatkan baris maksimum dalam grup?