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

Cách tách một hàng thành nhiều cột trong mysql

Trước tiên hãy chuẩn hóa chuỗi, xóa các vị trí trống và đảm bảo có% ở cuối:

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

Sau đó, chúng ta có thể đếm số lượng mục nhập bằng một thủ thuật. Thay thế '%' bằng '%' và đếm số khoảng trắng được thêm vào chuỗi. Ví dụ:

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

Sử dụng substring_index, chúng tôi có thể thêm cột cho một số vị trí:

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

Đối với ví dụ của bạn US%UK%JAPAN%CANADA , bản in này:

LocationCount  Loc1    Loc2    Loc3
4              US      UK      JAPAN

Vì vậy, bạn thấy nó có thể được thực hiện, nhưng phân tích chuỗi không phải là một trong những điểm mạnh của 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. Làm cách nào để hợp nhất hai bảng MySQL?

  2. sqlalchemy, đặt bộ mã MySQL làm đối số `create_engine`

  3. Có thể tạo một cột trong MySQL với một biểu thức làm giá trị mặc định không?

  4. Truy vấn được nhóm để chỉ tìm một bản ghi (worker_id =1 hoặc null)

  5. Cách chạy cùng một truy vấn với nhiều bảng trong cơ sở dữ liệu