20. november 2008 - 18:33
Der er
9 kommentarer og 1 løsning
Indsætte decimaltal i database
Hej Hvordan kan jeg gemme decimaltal i min mysql-database, på en sådan måde at jeg kan bruge de indbyggede funktioner som ORDER BY Tal DESC? - Morten
Annonceindlæg fra Kommando
20. november 2008 - 18:36
#1
Vaelg en kolonne type i MySQL som tager decimal tal og gem dem. Lige ud af landevejen.
20. november 2008 - 18:45
#2
Er det kun mig der føler mig dum? Kunne pludselig ikke tænke klart... (Smid et svar)
20. november 2008 - 19:06
#3
svar
20. november 2008 - 19:10
#4
Husk at i dynamisk SQL skal decimal tal altid vaere paa engelsk med punktum som decimal. Og til penge boer du bruge DECIMAL ikke FLOAT som kolonne type.
21. november 2008 - 19:05
#5
arne_v hvorfor DECIMAL og ikke FLOAT ?
21. november 2008 - 19:30
#6
FLOAT er god til videnskabelig brug (maal). DECIMAL er god til bogholderi (penge). FLOAT kan nemlig have lidt unoejagtighed. Om du har 18 km eller 17.999 km til arbejde er ligegyldigt. Men om der er 742.00 i kassen eller 741.99 i kassen er ikke ligegyldigt bogholderimaessigt (det er ligegyldigt udfra en realoeknomisk betragting).
21. november 2008 - 19:32
#7
Se f.eks.: mysql> CREATE TABLE fproblem (id INT PRIMARY KEY,x FLOAT(12,2)); Query OK, 0 rows affected (0.20 sec) mysql> mysql> INSERT INTO fproblem VALUES (1, 1000000000); Query OK, 1 row affected (0.03 sec) mysql> mysql> SELECT x FROM fproblem WHERE id=1; +---------------+ | x | +---------------+ | 1000000000.00 | +---------------+ 1 row in set (0.00 sec) mysql> mysql> UPDATE fproblem SET x=x+1000 WHERE id=1; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> mysql> SELECT x FROM fproblem WHERE id=1; +---------------+ | x | +---------------+ | 1000001024.00 | +---------------+ 1 row in set (0.00 sec) mysql> mysql> DROP TABLE fproblem; Query OK, 0 rows affected (0.00 sec)
21. november 2008 - 19:33
#8
interessant. Forstår dog ikke hvordan der kan være unøjagtighed. 1 øre er da for faen 1 øre :)
21. november 2008 - 19:41
#9
DECIMAL lagees som navnet antyder decimalt: a*100 + b*10 + c*1 + d*0.1 + e*0.01 og oerer er ikke et problem. FLOAT lagres paa en speciel binaer maade: (a*1/2 + b*1/4 + c*1/8 + d*1/16 + e*1/32 + ...)*2^f og det er ikke alle paene 1/10 og 1/100 som kan repreasenteres eksakt paa den maade.
21. november 2008 - 21:55
#10
vildt... tak for udredningen
Vi tilbyder markedets bedste kurser inden for webudvikling