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

SQL pisahkan baris yang dipisahkan koma

Anda dapat melakukannya dengan SQL murni seperti ini

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
  FROM table1 t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
 WHERE n.n <= 1 + (LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')))
 ORDER BY value

Catatan: Triknya adalah dengan memanfaatkan tabel penghitungan (angka) dan sangat berguna dalam hal ini fungsi MySQL SUBSTRING_INDEX() . Jika Anda melakukan banyak kueri (pemisahan) seperti itu, maka Anda mungkin mempertimbangkan untuk mengisi dan menggunakan tabel penghitungan yang bertahan alih-alih membuatnya dengan cepat dengan subkueri seperti dalam contoh ini. Subquery dalam contoh ini menghasilkan urutan angka dari 1 hingga 100 secara efektif memungkinkan Anda membagi hingga 100 nilai yang dibatasi per baris dalam tabel sumber. Jika Anda membutuhkan lebih atau kurang, Anda dapat dengan mudah menyesuaikannya.

Keluaran:

|          VALUE |
|----------------|
|     somethingA |
|     somethingB |
|     somethingC |
| somethingElseA |
| somethingElseB |

Ini SQLFiddle demo

Beginilah tampilan kueri dengan tabel penghitungan tetap

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
  FROM table1 t CROSS JOIN tally n
 WHERE n.n <= 1 + (LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')))
 ORDER BY value

Ini SQLFiddle demo




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menonaktifkan sementara batasan kunci asing di MySQL?

  2. Bisakah saya membuat database menggunakan PDO di PHP?

  3. Fungsi MySQL COT() – Mengembalikan Kotangen Angka di MySQL

  4. Menggunakan HHVM Dengan WordPress

  5. Peningkatan Otomatis setelah dihapus di MySQL