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

Chuyển đổi chuỗi phân tách thành nhiều giá trị trong mysql

Điều này được gọi là đi bộ một chuỗi . Dưới đây là một ví dụ về cách bạn có thể làm điều đó với các thông số kỹ thuật được cung cấp:

Bạn sẽ cần tạo một bảng chứa nhiều số nguyên bằng độ dài của trường + 1. Vì vậy, nếu độ dài của trường là 255, bạn sẽ cần 256 bản ghi chỉ chứa một số duy nhất từ ​​0-255.

int_table :

+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+---+

Tiếp theo, bạn sẽ cần một truy vấn tham gia vào bảng này và kiểm tra xem dấu phẩy có tồn tại ở vị trí đó hay không. (Tôi đã gọi bảng của bạn là legacy_table với các trường clientitems , tương ứng.)

select 
  legacy_table.client, 
  substring(
    legacy_table.items, 
    int_table.i + 1, 
    if(
      locate(',', legacy_table.items, int_table.i + 1) = 0, 
      length(legacy_table.items) + 1, 
      locate(',', legacy_table.items, int_table.i + 1)
    ) - (int_table.i + 1)
  ) as item
from legacy_table, int_table
where legacy_table.client = 'xyz001'
  and int_table.i < length(legacy_table.items)
  and (
    (int_table.i = 0) 
    or (substring(legacy_table.items, int_table.i, 1) = ',')
  )

Nó có thể không đủ hiệu quả để bạn thực sự sử dụng nó, nhưng tôi nghĩ tôi sẽ trình bày nó như một ví dụ chỉ để bạn biết những gì có sẵn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tải localhost chạy trên mac OS X Yosemite

  2. Định dạng dòng lệnh MySQL với UTF8

  3. Sử dụng đúng BoneCP

  4. Laravel 4:Làm thế nào để áp dụng điều kiện WHERE cho tất cả các truy vấn của một lớp Eloquent?

  5. Thay thế chuỗi MySQL