Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zsumować ciąg znaków oddzielonych przecinkami w SQL?

Z wielkim wysiłkiem możesz to zrobić. Naprawdę jednak jest to bardzo, bardzo zły sposób przechowywania danych.

W duchu, że czasami musimy używać danych, których format nie jest pod naszą kontrolą:

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;

Zagnieżdżony wywołany do substring_index() pobierz n-tą wartość w ciągu. concat(value, ',0') jest obsługa przypadku, w którym jest mniej wartości niż wyrażeń. W tym przypadku zagnieżdżone substring_index() zwróci ostatnią wartość dla dowolnej wartości n większej niż liczba pozycji na liście. Łączenie 0 do listy zapewnia, że ​​nie wpłynie to na sumę.

SQL Fiddle jest tutaj .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ograniczenie CHECK w MySQL nie działa

  2. Błąd w przygotowanym oświadczeniu

  3. Najlepszy sposób na zbudowanie wyszukiwarki SMART mySQL i PHP?

  4. Ograniczenie klucza podstawowego MySql z nazwą

  5. Przechowuj wiele wierszy z bazy danych mysql w jednej zmiennej