Avatar billede Slettet bruger
06. marts 2002 - 12:52 Der er 7 kommentarer og
2 løsninger

sortere efter tal

Hej - jeg ønsker at trække alle RS ud af databasen der begynder med et tal. Hvis det i stedet var bogstavet "A" ville jeg gøre sådan:

SQL = "SELECT FROM Games WHERE Game_name LIKE 'a%' ORDER by Game_name asc;"

Men hvis det skal være et tal - hvordan så?
Avatar billede rou Nybegynder
06. marts 2002 - 12:58 #1
SELECT * FROM games WHERE CONVERT(INT,LEFT(game_name,1)) IN (1,2,3,4,5,6,7,8,9,0) ORDER BY CONVERT(INT,LEFT(game_name,1))

Jeg tror også du kan bruge ISNUMERIC, istedet for IN. Det er dog ikke nemt at vide hvilken database type du bruger, nå du poster i en ASP sektion.

- Rou
Avatar billede Slettet bruger
06. marts 2002 - 13:02 #2
Hej tak for dit svar - det er access jeg bruger... Og om det er den der fejler ved jeg ikke - men din løsning vil ikke helt:

SQL = "SELECT * FROM games WHERE CONVERT(INT,LEFT(game_name,1)) IN (1,2,3,4,5,6,7,8,9,0) ORDER BY CONVERT(INT,LEFT(game_name,1));"

Jeg får. flg. fejlmedd.:

Der er en ikke-defineret funktion "CONVERT" i udtrykket.
/ps2/default.asp, line 279
Avatar billede rou Nybegynder
06. marts 2002 - 13:05 #3
Jeps, convert er en MSSQL funktion. Jeg checker lige hvad det hedder i Access.
Avatar billede Slettet bruger
06. marts 2002 - 13:23 #4
Altså - man KAN gøre det sådan her (eks. med 1 og 7), men det er jo ikke den korrekte måde - så skal jeg jo skrive det 10 gange...

SQL = "SELECT FROM Games WHERE Game_name LIKE '1%' or Game_name LIKE '7%' ORDER by Game_name asc;"
Avatar billede coltau Juniormester
06. marts 2002 - 13:43 #5
Den skal se således ud i Access:

SQL = "SELECT * FROM games WHERE LEFT(game_name,1) IN ('1','2','3','4','5','6','7','8','9','0') ORDER BY game_name"
Avatar billede Slettet bruger
06. marts 2002 - 13:47 #6
Tak skal I ha!
Avatar billede rou Nybegynder
06. marts 2002 - 14:08 #7
Brug istedet:

SELECT *
FROM afdelinger
WHERE ISNUMERIC(Left([afd_navn],1))
ORDER BY Left([afd_navn],1)
Avatar billede rou Nybegynder
06. marts 2002 - 14:09 #8
doh, glemte at erstatte afd_navn med dit feltnavn...

men du havde jo alligevel fået svar af coltau :)
Avatar billede coltau Juniormester
06. marts 2002 - 14:33 #9
Jeg ville nu slet ikke anbefale en løsning med både LEFT og IN da de er en del resourcekrævende. Måske er det muligt at lave en som denne:

SQL = "SELECT * FROM games WHERE game_name > '0' and  game_name < '9a' ORDER BY game_name" ' Kræver ikke så mange resourcer

Men det kræver at man kender det nøjagtige indhold af feltet: game_name
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
Kurser inden for grundlæggende programmering

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