Crazy wrote:
> Jeg har en kolonne hvori jeg kan have følgende værdier:
>
> Version:
> 1
> 1.2
> 1.2.7
> 1.2.8
> 1.2.9
> 1.2.10
>
> Når jeg tager en alm. "SORT BY Version" får jeg følgende liste:
>
> 1
> 1.2
> 1.2.10
> 1.2.7
> 1.2.8
> 1.2.9
>
> Det er jo som sådan korret, set fra databasens sysnpunkt, men som
> nogen måske kan gætte vil jeg gerne have sorteret det korrekt - er det
> muligt?
>
> Med en IP adresse kan jeg gøre det vha. noget CAST, men dér er der jo
> altid 3 punktummer (fast format), hvor dette kan være alt lige fra
> "1" (uden punktum) til f.eks. "1.2.3.4.5".
Det er en ret besværlig ting...
Måske kan man lave en funktion, der laver funktionummeret om til en streng,
og definerer at der er et maksimum antal punktummer, og et maksimum antal
cifre i hver "versionsdel".
Så 1 bliver til 00000000010000000000000000000000000000000000000000
1.2 bliver til 00000000010000000002000000000000000000000000000000
1.2.9 bliver til 00000000010000000002000000000900000000000000000000
1.2.10 bliver 00000000010000000002000000001000000000000000000000
1.2.3.4.5 00000000010000000002000000000300000000040000000005
Og hvad hvis der bliver en 1.2.9a-version?
Kan du ikke sortere på en udgivelsesdato i stedet?
Hvor mange versioner er der? Hvor tit ændrer de sig?
Måske en tabel (ver_to_seq) med versionsnumre som index, og et sorteringstal
som værdi.
Altså, så man ikke sorterer på versionsnummer men joine med ver_to_seq
Så kan man lave et program til at lave dette sorteringstal, trigget på en
opdatering (kun insert?) af produkttabellen; hvis versionsnummeret ikke
findes i ver_to_seq, starter en nysortering.
Så skal man bare have en funktion, der kan sammenligne to versionsnumre og
beslutte hvilken, der er størst, og bruge denne function som callback i en
generel sorteringsfunktion.
Leif