CalevanMedlem sedan maj 20031 173 inlägg Hej!
Jag förstår inte alls vad som är fel här. Låt mig visa. Jag har dessa olika SQL satser för att visa mitt problem:
nr1: SELECT * from tblIpLand Where IP_fran < '2165350315' and IP_till > '2165350315'
nr2: SELECT * from tblIpLand Where IP_fran < 2165350315 and IP_till > 2165350315
nr3: SELECT * from tblIpLand Where IP_fran < '1373932490' and IP_till > '1373932490'
nr4: SELECT * from tblIpLand Where IP_fran < 1373932490 and IP_till > 1373932490
Det som skiljer dem åt är talet samt fnuttarna. Dessa fyra rader ger mig helt olika svar nämligen dessa:
nr1:
214858672 226293055 US USA UNITED STATES
2165309440 2165374975 SE SWE SWEDEN
nr2:
2165309440 2165374975 SE SWE SWEDEN
nr3:
121195328 152305663 US USA UNITED STATES
1373634560 1374683135 SE SWE SWEDEN
nr4:
The conversion of the varchar value '3678535680' overflowed an int column. Maximum integer value exceeded.
Select nr1 och nr3 ger mig altså två svar, och jag undrar hur den lyckas välja ut den första raden? siffrorna är ju inte alls som i mitt krav i SQL satsen?
Select nr2 ger mig precis det jag vil ha, men när jag med Select nr4 försöker göra precis samma sak, fast med annat tal får jag ett konstigt felmedelande som ett tal jag inte alls känner igen. Vad är det som händer här egentligen? Kan någon hjälpa mig med det?
@ndersMedlem sedan juni 200032 969 inlägg Jag tycker inte att det är något fel i resultaten. Däremot verkar du ha vänt hakarna åt fel håll. > betyder större än, < mindre än.
Vad gäller felmeddelandet tycker jag det är glasklart. Du har inga apostrofer runt värdena, vilket innebär att de tolkas som integers. Talen är för stora för datatypen integer, därför får du felmeddelandet.
CalevanMedlem sedan maj 20031 173 inlägg OK, då ska det altså vara apostrofer runt värdet. undrar dock var det får talet '3678535680' ifrån som nämns i felmedelandet och konstigt att nr2 fungerar.
i de resultat som visas är det altså IP_fran och IP_till som visas först. om vi håller oss till nr1 ovan så säger den altså detta:
rad1:
214858672 < 2165350315 (detta stämmer)
226293055 > 2165350315 (detta stämmer INTE)
rad2:
2165309440 < 2165350315 (detta stämmer)
2165374975 > 2165350315 (detta stämmer)
träff på rad2 är den korrekta, men hur får den egenltigen det första? den påstår att ett 9-siffrigt tal är större än ett 10-siffrigt tal?
Jag tror altså att jag vänt hakarna åt rätt håll, tror felet är något annat. det verkar som den lägger till nollor efter talet? dvs den vet inte att det är tal utan som en sträng? hur får jag det till tal, men slipper problemet med att de blir förstora för datatypen integer?
tack!
CalevanMedlem sedan maj 20031 173 inlägg hmm, tror att det var det som var felet. att de betraktades som text och inte som tal. och för att lösa det hela tog jag bort fnuttarna. och för att kunna ha stora tal deklarerade jag fältet i databasen till bigint. så nu fungerar det fint!