|
| ORDER BY - SQL Server Fra : MKJ |
Dato : 24-09-05 09:45 |
|
Hej
Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.
--
MKJ
| |
Peter F. Poulsen (24-09-2005)
| Kommentar Fra : Peter F. Poulsen |
Dato : 24-09-05 10:28 |
|
MKJ wrote:
> Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
> jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
> ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.
Har du prøvet med "ORDER BY ASC"
Ellers, prøv gerne at give et par eksempler på hvordan dine data typisk
ser ud.
--
Med venlig hilsen
Peter Fløistrup Poulsen
| |
MKJ (24-09-2005)
| Kommentar Fra : MKJ |
Dato : 24-09-05 13:07 |
|
Peter F. Poulsen wrote:
> MKJ wrote:
>
> Har du prøvet med "ORDER BY ASC"
>
> Ellers, prøv gerne at give et par eksempler på hvordan dine data typisk
> ser ud.
>
> --
> Med venlig hilsen
> Peter Fløistrup Poulsen
ASC bruger jeg nu, det giver sorteringer som
Eksempel 1:
Str 10
Str 6
Str 8
Eksempel 2:
Blå
Grøn
Rød
Eksempel 2 er jo rigtig nok, men nr. 1 er forkert. Problemet er feltet
er af typen nvarchar og derfor sortere den som den gør.
I eksempel 1 kunne man bruge "order by LEN([text]) asc, [text] asc" det
giver den rigtige sortering (Str 6, Str 8, Str 10), men så bliver
sorteringen i eksempel 2 forkert (Blå, Rød, Grøn)
Det jeg eftersøger er nok en eller anden funktion der kan lave en
sortereing der er lidt "klogere". Måske med en temp table?
--
MKJ
| |
Jens Gyldenkærne Cla~ (25-09-2005)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 25-09-05 07:50 |
|
MKJ skrev:
> Eksempel 1:
> Str 10
> Eksempel 2:
> Blå
For mig at se er dit grundproblem at du gemmer forskellige
oplysninger i samme felt. Størrelse og farve er to forskellige
egenskaber, derfor bør de ligge i hvert sit felt.
Hvis størrelsen er numerisk, skal feltet til størrelse være af
typen tal for at sorteringen bliver korrekt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Thomas Damgaard Niel~ (24-09-2005)
| Kommentar Fra : Thomas Damgaard Niel~ |
Dato : 24-09-05 11:59 |
|
MKJ wrote:
> Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
> jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
> ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.
Jeg gætter på, at du har gemt dine data i en strengtype. Derfor sorterer
basen faktisk dine resultater korrekt. Måske burde du have valgt en
nummerisk datatype til at gemme størrelserne i?
--
Thomas Damgaard Nielsen
http://thomasdamgaard.dk/
Svar venligst under det du citerer. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Peter Lykkegaard (24-09-2005)
| Kommentar Fra : Peter Lykkegaard |
Dato : 24-09-05 13:02 |
|
"MKJ" wrote
>
> Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
> jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
> ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.
>
Hvordan ser dine data ud når de ligger i tabellen?
Jeg vil formode at du kan løse problemet ved at lave foranstillede nuller
til feltets længde
Ved alphanumeriske data så gør du ingenting
Fx
-- -------------------
CREATE Function fn_ZeroFill (@Param VarChar(255), @Len Int)
Returns VarChar(255)
AS
BEGIN
Declare @Data VarChar(255)
SET @Data = LTrim(RTrim(@Param))
IF IsNumeric(@Data) = 0
RETURN @Data
-- END IF
IF Len(@Data) >= @Len
RETURN @Data
-- END IF
RETURN replicate('0', @Len - Len(@Data)) + @Data
END
Go
-- -------------------
select dbo.fn_ZeroFill(' 80', 10)
Go
-- -------------------
- Peter
| |
Jan Bachman (24-09-2005)
| Kommentar Fra : Jan Bachman |
Dato : 24-09-05 17:28 |
|
On Sat, 24 Sep 2005 10:45:22 +0200, MKJ <m@ds.dk> wrote:
>Hej
>
>Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
>jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
>ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.
Prøv med:
ORDER BY Len(felt), felt
/Jan
| |
Jan Bachman (24-09-2005)
| Kommentar Fra : Jan Bachman |
Dato : 24-09-05 17:30 |
|
>Prøv med:
>ORDER BY Len(felt), felt
Det duer dog kun til dine størrelser...
/Jan
| |
|
|