sql >> Database >  >> RDS >> Mysql

Hoe een door komma's gescheiden tekenreeks in SQL optellen?

Met veel moeite kun je dit doen. Dit is echter een zeer, zeer slechte manier om gegevens op te slaan.

In de geest dat we soms gegevens moeten gebruiken waarvan het formaat niet onder onze controle is:

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;

De geneste aangeroepen naar substring_index() haal de n-de waarde in de string op. De concat(value, ',0') is om het geval te behandelen waarin er minder waarden zijn dan expressies. In dit geval is de geneste substring_index() retourneert de laatste waarde voor elke waarde van n groter dan het aantal items in de lijst. Samenvoegen 0 naar de lijst zorgt ervoor dat dit geen invloed heeft op de som.

De SQL Fiddle is hier .



  1. Hoe het aantal weken in datum om te zetten?

  2. Hoe de MySQL-databasegrootte in Linux te controleren

  3. MySQL installeren en laden database op Inno Setup-script

  4. WooCommerce:de producten in de database vinden