---
title: "Sorteringsproblem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/49199-sorteringsproblem"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "renholm"
published: "2002-08-01T09:00:24.000Z"
updated: "2002-09-30T11:40:50.000Z"
replies: 8
views: 288
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/49199-sorteringsproblem"
---

# Sorteringsproblem

## #1 — renholm, 2002-08-01T09:00Z

Har problem med sortering av fält innehållandes både bokstäver och siffror. Detta blir resultatet som jag inte är nöjd med:

```
	file_id	file_name	file_catid

	29	GC1	12
	39	GC10	12
	112	GC100	12
	117	GC105	12
	118	GC106	12
	119	GC106	12
	120	GC107	12
	121	GC108	12
	122	GC109	12
	136	GC11	12
	123	GC110	12
	124	GC113	12
	125	GC114	12
	126	GC117	12
	40	GC12	12
	41	GC14	12
```

SQL:

```
ORDER BY file_name
```

Jag vill ha så att den sorterar i nummer följd och ignorerar vilka bokstäver som står före. Resultatet bör bli något i stil med:

```
	file_id	file_name	file_catid

	29	GC1	12
	31	GC2	12
	32	GC3	12
	33	GC4	12
	34	GC5	12
	35	GC6	12
	36	GC7	12
	37	GC8	12
	38	GC9	12
	39	GC10	12
	112	GC100	12
	117	GC105	12
	118	GC106	12
	119	GC106	12
	120	GC107	12
	121	GC108	12
	122	GC109	12
```

Permalänk: https://www.webforum.nu/p/49199

## #2 — LarsG, 2002-08-01T09:16Z

Det går om det finns en systematik i filnamnen.

Är det alltid lika många inledande bokstäver?
Slutar alla filnamn med numeriska värden?

```
-- om 1 är sant och de två första tecknen är bokstäver
order by cast(substring(file_name,3,len(file_name)-2) as int)

-- om 2 är sant

order by cast(substring(file_name,patindex('[0-9]',file_name),
                       len(file_name)-patindex('[0-9]',file_name)+1) as int)
```

Koden är specifik för sql server

Permalänk: https://www.webforum.nu/p/737969

## #3 — renholm, 2002-08-01T09:27Z

False!

Tyvärr så är inget sant, det är det som gör det klurigt, resultaten visas efter vilket catid de har, så vissa kategorier har t.ex "GC123" och andra kan heta "Så det kan gå".

Permalänk: https://www.webforum.nu/p/737978

## #4 — LarsG, 2002-08-01T09:58Z

Är alla siffror sammanhängande eller kan det finnas namn som

A123B456 ?

Och i så fall hur skall dom sorteras?

Om du använder sql server 2000 så går det att skriva en funktion som tittar på varje tecken och plockar ut alla siffror

```
create function analyzeThis(@file_name varchar(30))
returns int as 
declare @number,@p int
declare @c char
set @number = 0
set @p = 1
while @p <= len(@file_name)
begin
   set @c = substring(@file_name,@p,1) 
   if @c between '0' and '9'
      set @number = 10*@number + cast(@c as int)
   set @p = @p + 1
end 
if @number = 0 set @number = 9999999
return @number
```

```
order by analyzeThis(file_name)
```

Permalänk: https://www.webforum.nu/p/738023

## #5 — renholm, 2002-08-01T11:13Z

ok, för antingen är file_name = BokstäverSiffror eller bara bokstäver, och den ska sortera efter siffrorna i slutet när filnamnet slutar med siffro t.ex BG0145. De kommer aldrig heta t.ex DV012BN2. Om det är bara bokstäver så ska den bara sortera i bokstabsordning.

Jag använder MS SQL Server 2000, men ska jag lägga din function i User Defined Functions?

Permalänk: https://www.webforum.nu/p/738102

## #6 — LarsG, 2002-08-01T11:19Z

om du vill ha sortering enligt bokstavsordning på de utan bokstäver så behöver du lägga till

```
order by analyzeThis(filename),filename
```

Om alla siffror är sammanhämgande så går det att göra utan en funktion. (Har inte tid nu har starttid 14.17 på golfbanan. Man kan plocka ihop det med funktionerna substring patindex cast och reverse.)

Permalänk: https://www.webforum.nu/p/738116

## #7 — renholm, 2002-08-01T11:24Z

ok, ska kika på det... lycka till med golfen

Permalänk: https://www.webforum.nu/p/738133

## #8 — renholm, 2002-09-24T11:21Z

Hum, nu har jag kikat på det och kommit fram till att din funktion inte fungerade... har jag gjort fel? Jag la den i User Defined Functions. Men blev syntax error.

Permalänk: https://www.webforum.nu/p/795742

## #9 — renholm, 2002-09-30T11:40Z

Sorry om jag är tjatig men har ännu inte löst problemet, hur ska jag göra?

Permalänk: https://www.webforum.nu/p/803267

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/49199-sorteringsproblem
