Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - sắp xếp chuỗi được phân tách bằng dấu phẩy trong cột

Có thể, nhưng không hẳn là một ý kiến ​​hay.

Ví dụ:bạn có thể tách danh sách được phân tách bằng dấu phẩy bằng cách tạo một dải số và sử dụng dãy số đó với SUBSTRING_INDEX để lấy từng phần tử. Tuy nhiên, phạm vi số cần phải lớn bằng số giá trị được phân tách tối đa.

Sau đó, bạn có thể sử dụng GROUP_CONCAT để nối lại danh sách với nhau theo đúng thứ tự. Lưu ý rằng thứ tự sẽ khác nhau tùy thuộc vào việc bạn đã truyền các giá trị tách ra dưới dạng số / số nguyên hay để chúng dưới dạng chuỗi.

SELECT id, title, GROUP_CONCAT(aNumber ORDER BY aNumber)
FROM
(
    SELECT id, title, CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(numbers, ',', tens.acnt * 10 + units.acnt + 1), ',', -1) AS UNSIGNED) AS aNumber
    FROM some_table
    CROSS JOIN
    (SELECT 0 AS acnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units
    CROSS JOIN
    (SELECT 0 AS acnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
    WHERE LENGTH(numbers) - LENGTH(REPLACE(numbers, ',', '')) >= tens.acnt * 10 + units.acnt
) sub0
GROUP BY id, title;

Trình bày ở đây trên SQL fiddle (nếu SQL fiddle quyết định hoạt động):-

http://www.sqlfiddle.com/#!9/c9703ee/4

Lựa chọn đầu tiên là truyền các giá trị dưới dạng số nguyên để sắp xếp chúng theo số, lựa chọn thứ hai không truyền chúng mà chỉ để chúng dưới dạng chuỗi, do đó thứ tự sắp xếp khác nhau.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng MySql trên Mac

  2. NHÓM truy vấn MySQL THEO ngày / tháng / năm

  3. MySQL FULLTEXT sẽ không hoạt động với nhiều trường

  4. Cách đặt Chuỗi kết nối với Khung thực thể

  5. LoadError khi cố gắng sử dụng MySQL với Ruby on Rails trong Windows, RubyMine IDE