Avatar billede datamatikeren Nybegynder
11. februar 2008 - 19:11 Der er 4 kommentarer og
1 løsning

Sortering af varchar felt.

Hej.

Jeg har en tabel, som indeholder postnumre for england. disse vil jeg gerne have sorteret via en sql funtion, så jeg får et resultset, hvor dataene er sortere som jeg gerne vil have dem.

Tabellen indeholder f.eks.
EW14
B1       
B11     
B13     
B19     
B10     
B2       
B21     
B22     
EW1
EW30
osv.

Jeg vil gerne have dem ud i denne rækkefølge:
B1       
B2 
B11     
B13     
B19     
B10 
B21     
B22     
EW1
EW14
EW30

Altså sortere "logisk" for brugerne
Nogen der kan hjælpe mig med dette?
Avatar billede arne_v Ekspert
11. februar 2008 - 19:18 #1
Du skal splitte op i en bogstav del og en numerisk del - og sortere dem henholdsvist
alfabetisk og numerisk.

Umiddelbart tror jeg at det var bedre at lave det i din applikation end i SQL.
Avatar billede datamatikeren Nybegynder
12. februar 2008 - 08:43 #2
Det er også muligt at lave det i min webapplikation (c#.net). Har du et eksempel på det?
Avatar billede powerpunk Nybegynder
12. februar 2008 - 09:10 #3
Du laver dig en struct (eller klasse) som implementerer IComparable<T> á la:

  public struct PostalCode : IComparer<PostalCode>
  {
    ...

    public int Compare(PostalCode x, PostalCode y)
    {
      int result = x._stringPart.CompareTo(y._stringPart);

      if (result != 0) //Hvis strengene er 'lige' sorteres alfabetisk.
        return result;
      else //Ellers sorteres på den numeriske del
        return x._numericPart.CompareTo(y._numericPart);
      }
  }

Så skal du bare lave noget konstruktor halløj, som splitter dine strenge op i en streng-del og en numerisk del.
Avatar billede powerpunk Nybegynder
12. februar 2008 - 09:12 #4
//Hvis strengene er 'lige' sorteres alfabetisk.

skulle naturligvis have været

//Hvis strengene er 'ulige' sorteres alfabetisk.
Avatar billede datamatikeren Nybegynder
12. februar 2008 - 12:16 #5
Jeg fik det løst.

Men det blev til en noget avanveret SQL med en masse: PATINDEX('%0123456789%', POSTNUMMER) :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester