webForumDet fria alternativet

INT, BIGINT. Det blir fel tal!

Databaser & SQL

4 svar · 200 visningar · startad av cyprys

Medlem sedan dec. 20003 563 inlägg
Frågan#1

Ska lägga in ett personnummer/org.nr i en kolumn där jag satt INT(10) som kolumntyp.

Om jag skall lägga in numret 821024-1439 så formaterar jag först bort bindestrecket med org.text.tostring().replace("-", "") (asp.net) och lägger in det i sql-satsen.
Problemet är att numret som fastnar i databasen är 2147483647.

Om jag istället använder org-numret 111111-1111 så blir talen rätt.
Om jag däremot använder datatypen BIGINT så blir talet 0 vad jag än skriver...
Det funkar bra om jag kör varchar på det, men det känns onödigt.
Vart ligger da fel tror ni?

Medlem sedan mars 20034 471 inlägg
#2

Jag *TROR* inte att int har någon storleksangivelse. Pröva att ange typen som bara int.

Medlem sedan dec. 20003 563 inlägg
#3

Jag har testat int, mediumint, int(11), int(10), bigint, long, double.

Medlem sedan dec. 200012 464 inlägg
#4

Option=16384

vid connect om du vill använda bigint tror jag benhårt på.

Int(10) innebär inte 10 siffrors precision, det är fortfarande 4 bytes som används så att ange (10) är meningslöst.

Själv skulle jag använda varchar.

Medlem sedan dec. 20003 563 inlägg
#5

Yupp, jag gick över på char(10) istället.
Kom på att jag kanske inte behöver söka på siffrorna i någon större utsträckning i framtiden.

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)