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

MySQL - Nhận 3 giá trị được phân tách bằng dấu phẩy đầu tiên

Bạn có thể sử dụng SUBSTRING_INDEX hai lần, lần thứ hai với -1 tham số:

SELECT
  'aaaaa, bbbbb, ccccc',
  SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 1) AS column_one,
  SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2), ',', -1) AS column_two,
  SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 3), ',', -1) AS column_three

Nếu tham số là âm, mọi thứ ở bên phải của dấu phân cách cuối cùng (đếm từ bên phải) sẽ được trả về. Ví dụ:

  • SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2) sẽ trả về aaaaa, bbbbb
  • SUBSTRING_INDEX( aaaaa, bbbbb , ',', -1) sau đó sẽ trả về bbbbb

Bạn cũng có thể muốn sử dụng ',' làm dấu phân cách hoặc TRIM kết quả.

Vui lòng xem fiddle tại đây .

Chỉnh sửa

Nếu bạn muốn xem xét các chuỗi có thể có ít hơn ba giá trị, bạn có thể sử dụng một cái gì đó như sau:

SELECT
  s,
  SUBSTRING_INDEX(s, ',', 1) AS column_one,
  CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>0
       THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 2), ',', -1)
       ELSE NULL END AS column_two,
  CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>1
       THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 3), ',', -1)
       ELSE NULL END AS column_three
FROM
  strings

Vui lòng xem fiddle tại đây .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Tham số trong câu lệnh sql chứa date_format

  2. MySQL nối và lỗi kết hợp bất hợp pháp của các đối chiếu

  3. Xem định nghĩa hàm / thủ tục được lưu trữ trong MySQL

  4. Làm thế nào để biết có bao nhiêu dòng mysql được cập nhật

  5. hợp nhất hai truy vấn SELECT