[MySQL] Sorteren van een Varchar veld

Pagina: 1
Acties:

  • PluueeR
  • Registratie: December 2000
  • Laatst online: 17-08 21:56
Ik heb een tabel met een kolom waarin de artikel nummers staan. Deze kolom is van het type varchar (artikel nummers kunnen nummeriek en alphanummeriek zijn).

Wanneer ik hier op soorteer krijg ik als output zeg maar: 1,2,3,4,5,51,6,w1,w2,w3. Dit sorteren doe ik dmv SELECT *FROM product ORDER BY articlenr

Hij gaat dus 51 voor 6 outputten. Erg lastig. Alle artikelnummers nummeriek maken is geen oplossing.

Nu weet ik dat met CHAR het veld wordt aangevuld met spaties (achter de waarde) wanneer een waarde kleiner is dan de maximale lengte van de kolom. Wanneer die spaties voor de waarde zouden worden gezet zou het wel werken. Maar is dit mogelijk met SQL? Of moet ik hier zelf iets voor maken met PHP?

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 17:51
Ik meen me te herinneren dat ik eens in de manual had gelezen dat MySQL getallen ook 'natural' kon sorteren als ze in een niet-numeriek type stonden, maar dat vind ik nergens meer terug.
Jouw eigen oplossing met spaties kan je misschien doen met de functie LPAD (beetje omlaag scrollen, 20e functie): ORDER BY LPAD(articlenr, xxx, ' '). Hierin is xxx de lengte van je varchar.
Ik zeg 'misschien' omdat ik niet weet of je in een ORDER BY een string-functie kan gebruiken?

  • PluueeR
  • Registratie: December 2000
  • Laatst online: 17-08 21:56
Ik heb het inmiddels opgelost door de voorletter een apart ivoer veld van te maken die niet verplicht hoeft te zijn.

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Zoek anders eens naar CONVERT of CAST