Avatar billede supermand69 Nybegynder
27. december 2003 - 01:26 Der er 3 kommentarer og
1 løsning

int(3) kan være på mere end 3 decimaler

hey...

har et underligt problem med MySQL...

jeg har et felt i min database der har INT(3) men kan sagtens indsætte tal med mere end 3 decimaler???
Avatar billede Slettet bruger
27. december 2003 - 08:01 #1
Fra MySQL-manualen:

Another extension is supported by MySQL for optionally specifying the display width of an integer value in parentheses following the base keyword for the type (for example, INT(4)). This optional width specification is used to left-pad the display of values whose width is less than the width specified for the column, but does not constrain the range of values that can be stored in the column, nor the number of digits that will be displayed for values whose width exceeds that specified for the column.

Kort oversat, betyder tallet bare, at mindre tal skal have mellemrummer fyldt på.
Avatar billede erikjacobsen Ekspert
27. december 2003 - 09:16 #2
Du kan bruge TINYINT (-128 til 127  eller 0 til 255)
Eller MEDIUMINT (ca. -32000 til 32000 eller 0 til ca 65000)

Men du får som sagt ikke mysql til selv at sikre dig max 3 cifre, dvs. 0 til 999
Avatar billede supermand69 Nybegynder
27. december 2003 - 14:38 #3
det vil altså sige at man egentlig bare kan skrive int(1) til alle??

hvis man nu har int(3) vil det så sige at databasen nærmest i forvejen har gjort plads til 3 tegn? altså at man går ud fra at der ikke er tal med mere end 3 tal... hvis man så kommer med et tal der har mere end 3 decimaler skal databasen til at "udvidde" feltet??

ved ikke lige om i forstår hvad jeg mener :)
Avatar billede Slettet bruger
27. december 2003 - 14:51 #4
Nej, en INT er på 4 bytes, og der er i databasen altid afsat 4 bytes plads til en INT uanset hvilket tal den måtte indeholde. Tallet er udelukkende til at pynte på rå data fra MySQL, så det bliver pænt stillet op.

Hvis du vil have en værdi, der kan have 3 cifre og intet andet, kan du bruge DECIMAL(3,0) som type. Den bruger 1 byte pr ciffer plus 1 byte for fortegn og eventuelt 1 byte for decimalkomma.

http://www.mysql.com/doc/en/Numeric_types.html
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
Computerworld tilbyder specialiserede kurser i database-management

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