Hallo,

is er iemand die me kan helpen bij het sorteren van gegevens uit de database waarbij er getallen in de omschrijving staan die ik in de while graag alphanumeric wil tonen op het scherm.
Kan dit al in de SELECT mbv Order by of moet ik in een later stadium doen?
Met de gewone order by zet hij 11 boven de 8. Dus iPhone 8 of iPhone 11 in de omschrijving.

Groet,

Vincent
Of maak een apart veld met het versienummer.
Beide aangedragen opties waren niet het gewenste antwoord.
Inmiddels heb ik na heel wat speurwerk de oplossing gevonden en doet volledig aan mijn vraag en wensen...

ORDER BY CAST(CASE WHEN modelnaam LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' THEN RIGHT(modelnaam ,7) WHEN modelnaam LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9]' THEN RIGHT(modelnaam ,6) WHEN modelnaam LIKE '%[0-9][0-9][0-9][0-9][0-9]' THEN RIGHT(modelnaam ,5) WHEN modelnaam LIKE '%[0-9][0-9][0-9][0-9]' THEN RIGHT(modelnaam ,4) WHEN modelnaam LIKE '%[0-9][0-9][0-9]' THEN RIGHT(modelnaam ,3) WHEN modelnaam LIKE '%[0-9][0-9]' THEN RIGHT(modelnaam ,2) WHEN modelnaam LIKE '%[0-9]' THEN RIGHT(modelnaam ,1) ELSE NULL END AS INT)
Wat werkte er niet aan de aangedragen mogelijkheden?
Omdat een iPhone meerdere modellen heeft in dezelfde serie.
Dus iPhone 13, iPhone 13 Pro en iPhone 13 Pro Max.
Dus het is niet te doen om het getal in een aparte kolom te plaatsen om het dan in de db toe te voegen of eruit te filteren.

De andere optie kijkt enkel naar het getal en voldoet dus niet aan de totale volgorde in de gehele naam van het model.

Ik ben blij dat ik de oplossing toch heb gevonden.
Adoptive Solution op 04/03/2024 14:06:01

Bij mij lukt het met natural sort.

https://ibb.co/ZV2MGYp


Ohw, das dan misschien toch een betere optie. Ik kreeg het zo niet voor elkaar.
Dan ga ik er nog eens even beter naar kijken.
Dank voor het voorbeeld.
misschien leuk om de query hier even te plaatsen?
Ik merk dat mijn optie ook niet optimaal werkt en wil toch die andere opties eens uitproberen.
Op internet is er veel discussie over hoe dit aan te pakken en waarom het niet als standaard is ingesteld in php en in mysql.
Dus ik zou graag dit onderwerp wat uitgebreider willen zien. Wat moet ik bijvoorbeeld instellen in de database en wat in de select ?

SELECT * 
FROM tabel
ORDER BY NATURAL_SORT_KEY(kolomnaam)


met voorbeelden op https://mariadb.com/kb/en/natural_sort_key/


INSERT INTO t1 VALUES 
  ('5.5.31'),('10.7.0'),('10.2.3'),
  ('10.1.22'),('10.3.32'),('10.2.12');


SELECT c FROM t1 ORDER BY c;
+---------+
| c       |
+---------+
| 10.1.22 |
| 10.2.12 |
| 10.2.3  |
| 10.3.32 |
| 10.7.0  |
| 5.5.31  |
+---------+

SELECT c FROM t1 ORDER BY NATURAL_SORT_KEY(c);
+---------+
| c       |
+---------+
| 5.5.31  |
| 10.1.22 |
| 10.2.3  |
| 10.2.12 |
| 10.3.32 |
| 10.7.0  |
+---------+

Reageren