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

Cara membagi satu baris menjadi beberapa kolom di mysql

Pertama normalkan string, hapus lokasi kosong dan pastikan ada % di akhir:

select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1

Kemudian kita bisa menghitung jumlah entri dengan trik. Ganti '%' dengan '% ', dan hitung jumlah spasi yang ditambahkan ke string. Misalnya:

select length(replace(str, '%', '% ')) - length(str)
    as LocationCount    
from (
    select replace(concat(user_location,'%'),'%%','%') as str
    from YourTable where user_id = 1
) normalized

Menggunakan substring_index, kita dapat menambahkan kolom untuk sejumlah lokasi:

select length(replace(str, '%', '% ')) - length(str)
    as LocationCount    
, substring_index(substring_index(str,'%',1),'%',-1) as Loc1
, substring_index(substring_index(str,'%',2),'%',-1) as Loc2
, substring_index(substring_index(str,'%',3),'%',-1) as Loc3
from (
    select replace(concat(user_location,'%'),'%%','%') as str
    from YourTable where user_id = 1
) normalized

Sebagai contoh US%UK%JAPAN%CANADA , ini mencetak:

LocationCount  Loc1    Loc2    Loc3
4              US      UK      JAPAN

Jadi Anda lihat itu bisa dilakukan, tetapi penguraian string bukanlah salah satu kekuatan SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django :Tabel tidak ada

  2. Peningkatan kinerja MySQL setelah membuat &menjatuhkan indeks

  3. parse.com alternatif sumber terbuka untuk backend

  4. Pisahkan string yang dipisahkan koma menjadi baris di mysql

  5. waktu eksekusi mysql