webForumDet fria alternativet

Fält för visningsordning i MS-SQL 2000

Databaser & SQL

2 svar · 325 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena
Har ett problem med MS-SQL server.
Ja använder ett fält som heter "key_order" i en tabell för att bestämma visningordning på poster.
Kolumnen är av typen int(4) och sen innehåller kolumnen värden såsom 1,2,3..., 5, 6..., 10 osv.

Jag anger i sql frågan:

...ORDER BY key_lang ASC

Problemet är att kolumnen verkar tolkas som en textsträng, för att ordningen blir nu:

1, 10, 11, 2, 3...osv

Har stött på det här tidigare i Access, men då har det berott på slarv, att man angivit "text" som datatyp, men det är alltså inte felet här.

Så, vad ska jag göra för att lösa det här?
Måste jag deklarera dessa värden som tal (int()..?) innan jag sparar dom i databasen, eller finns det nått annat knep?

Tack!

Medlem sedan juni 200032 967 inlägg
#2

Måste jag deklarera dessa värden som tal (int()..?) innan jag sparar dom i databasen

Nej, det har ingen som helst betydelse. Din INSERT-fråga i sig är ju ändå en sträng, så konkatenerar du in talvärden blir de ju i alla fall bara del av en sträng.

Problemet är att kolumnen verkar tolkas som en textsträng, för att ordningen blir nu:

Kod:
1, 10, 11, 2, 3...osv

Har stött på det här tidigare i Access, men då har det berott på slarv, att man angivit "text" som datatyp, men det är alltså inte felet här.

Det låter suspekt. :)
Om det är ett vanligt integer-fält i SQL Server så ska det inte kunna bli så.

eller finns det nått annat knep?

Skapa ett nytt integer-fält i tabellen, fyll det med samma data som ditt sorteringsfält och testa.
Annars är det bara att göra en CAST till integer i din ORDER BY...

Medlem sedan feb. 20034 441 inlägg
#3

MickeA.com skrev:

Har stött på det här tidigare i Access, men då har det berott på slarv, att man angivit "text" som datatyp, men det är alltså inte felet här.

@nders skrev:

Det låter suspekt. :)

Ahh, självklart var det "samma" fel även den här gången ;)
Måste sluta jobba så sena kvällar, det är faan inte bra :D

Tack @nders för att du väckte mig (y)

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)