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

Làm thế nào để tính tổng một chuỗi được phân tách bằng dấu phẩy trong SQL?

Với nỗ lực cao, bạn có thể làm được điều này. Tuy nhiên, thực sự, đây là một cách rất, rất tệ để lưu trữ dữ liệu.

Với tinh thần là đôi khi chúng tôi phải sử dụng dữ liệu có định dạng không nằm trong tầm kiểm soát của chúng tôi:

select id,
       (substring_index(value, ',', 1) +
        substring_index(substring_index(concat(value, ',0'), ',', 2), ',', -1) +
        substring_index(substring_index(concat(value, ',0'), ',', 3), ',', -1) +
        substring_index(substring_index(concat(value, ',0'), ',', 4), ',', -1) +
        substring_index(substring_index(concat(value, ',0'), ',', 5), ',', -1)
       ) as thesum
from t;

Lồng nhau được gọi tới substring_index() tìm nạp giá trị thứ n trong chuỗi. concat(value, ',0') là xử lý trường hợp có ít giá trị hơn biểu thức. Trong trường hợp này, substring_index() lồng nhau sẽ trả về giá trị cuối cùng cho bất kỳ giá trị nào của n lớn hơn số mục trong danh sách. Nối 0 vào danh sách đảm bảo rằng điều này không ảnh hưởng đến tổng.

SQL Fiddle là đâ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. Giới hạn MySQL với biến

  2. Làm thế nào để bạn tham gia vào cùng một bàn, hai lần, trong mysql?

  3. Con trỏ có thể cuộn trong PHP PDO MySQL không hoạt động

  4. Cách thực thi thủ tục đã lưu trữ trong MySQL Workbench

  5. Tại sao các hàng sẽ khớp nhưng không được thay đổi với câu lệnh cập nhật mysql?