/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Decimaler (MySQL)...
Fra : Thomas Jensen


Dato : 07-08-03 17:59

Hej,

Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
decimaler efter
ex:
1549,63

Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
(altså 00 i de sidste 2 dec)

Hvad gør jeg?

Thomas



 
 
Hasse R. Hansen (07-08-2003)
Kommentar
Fra : Hasse R. Hansen


Dato : 07-08-03 18:12

On Thu, 7 Aug 2003 18:58:32 +0200, "Thomas Jensen" <tgsj@mail.dk>
wrote:

>Hej,
>
>Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
>decimaler efter
>ex:
>1549,63
>
>Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
>(altså 00 i de sidste 2 dec)
>
>Hvad gør jeg?
>
kunne det ikke skyldes at du bruger , istedet for .
mvh.
Hasse R. Hansen

Thomas Jensen (07-08-2003)
Kommentar
Fra : Thomas Jensen


Dato : 07-08-03 20:49

Hvis jeg bruger . (punktum) får jeg en fejl i database, når jeg forsøger at
ændre det

"Hasse R. Hansen" <hasse@REMOVEramlev.dk> skrev i en meddelelse
news:t125jvkijbifrvvvhr1sf7nic6bekfl86h@4ax.com...
> On Thu, 7 Aug 2003 18:58:32 +0200, "Thomas Jensen" <tgsj@mail.dk>
> wrote:
>
> >Hej,
> >
> >Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
> >decimaler efter
> >ex:
> >1549,63
> >
> >Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
> >(altså 00 i de sidste 2 dec)
> >
> >Hvad gør jeg?
> >
> kunne det ikke skyldes at du bruger , istedet for .
> mvh.
> Hasse R. Hansen



Jimmy (07-08-2003)
Kommentar
Fra : Jimmy


Dato : 07-08-03 19:15


"Thomas Jensen" <tgsj@mail.dk> wrote in message
news:3f328530$0$76133$edfadb0f@dread11.news.tele.dk...
> Hej,
>
> Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
> decimaler efter
> ex:
> 1549,63
>
> Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
> (altså 00 i de sidste 2 dec)
>
> Hvad gør jeg?

Jeg vil *klart* anbefale at anvende en INT.

Når du henter din data ud kan du gøre det via:

SELECT (foo/100) AS foo FROM bar

Mvh
Jimmy



Thomas Jensen (07-08-2003)
Kommentar
Fra : Thomas Jensen


Dato : 07-08-03 20:55

hvordan får jeg tilføjet det i nedenstående, så den stadig tager resten af
rækkerne med?

$query="SELECT * FROM photo order by photoID asc";

"Jimmy" <nyhedsgruppe@get2net.dk> skrev i en meddelelse
news:1GwYa.1926$n51.120@news.get2net.dk...
>
> "Thomas Jensen" <tgsj@mail.dk> wrote in message
> news:3f328530$0$76133$edfadb0f@dread11.news.tele.dk...
> > Hej,
> >
> > Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
> > decimaler efter
> > ex:
> > 1549,63
> >
> > Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
> > (altså 00 i de sidste 2 dec)
> >
> > Hvad gør jeg?
>
> Jeg vil *klart* anbefale at anvende en INT.
>
> Når du henter din data ud kan du gøre det via:
>
> SELECT (foo/100) AS foo FROM bar
>
> Mvh
> Jimmy
>
>



Jimmy (07-08-2003)
Kommentar
Fra : Jimmy


Dato : 07-08-03 22:06


"Thomas Jensen" <tgsj@mail.dk> wrote in message
news:3f32aead$0$76155$edfadb0f@dread11.news.tele.dk...
> hvordan får jeg tilføjet det i nedenstående, så den stadig tager resten af
> rækkerne med?

Kan jeg ikke få dig til at skrive under det du besvarer og klippe overflødig
tekst væk?


> $query="SELECT * FROM photo order by photoID asc";

Det kan du gøre på følgende måde:

$query = "SELECT (foo/100) AS foo, * FROM photo order by photoID asc";


Du skal erstatte foo med navnet på den kolonne, der indeholder dine værdier.

Du skal samtidig huske at du nu ikke opererer med kommatal, men med tal, der
er 100 gange så store som dem du hiver ud.
Dette er normalt kun noget du skal huske ved INSERT og UPDATE.

Mvh
Jimmy



Thomas Jensen (10-08-2003)
Kommentar
Fra : Thomas Jensen


Dato : 10-08-03 18:55


"Jimmy" <nyhedsgruppe@get2net.dk> skrev i en meddelelse
news:AazYa.1950$432.959@news.get2net.dk...

> Det kan du gøre på følgende måde:
>
> $query = "SELECT (foo/100) AS foo, * FROM photo order by photoID asc";
>
>
> Du skal erstatte foo med navnet på den kolonne, der indeholder dine
værdier.
>
> Du skal samtidig huske at du nu ikke opererer med kommatal, men med tal,
der
> er 100 gange så store som dem du hiver ud.
> Dette er normalt kun noget du skal huske ved INSERT og UPDATE.

Skulle det ikke være noget lign:
$query = "INSERT INTO photo SET photoID=NULL,
photoFileName='$photoFileName', title='$title', description='$description',
pris AS '($pris*100)'";

men det giver flg fejlmedd:
Mysql error: You have an error in your SQL syntax near 'AS '(111*100)'' at
line 1

Thomas



Martin Sveegaard (10-08-2003)
Kommentar
Fra : Martin Sveegaard


Dato : 10-08-03 21:37

On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>
wrote:

>Skulle det ikke være noget lign:
>$query = "INSERT INTO photo SET photoID=NULL,
>photoFileName='$photoFileName', title='$title', description='$description',
>pris AS '($pris*100)'";

$query = "INSERT INTO photo SET photoID=NULL,
photoFileName='$photoFileName', title='$title',
description='$description',
pris=$pris*100";
MVH Martin S

Thomas Jensen (10-08-2003)
Kommentar
Fra : Thomas Jensen


Dato : 10-08-03 22:48


"Martin Sveegaard" <sveegaard@tdcadslFJERNDETTE.dk> skrev i en meddelelse
news:r5bdjv8de49cotfcgkatrk5egsgju6amq5@4ax.com...
> On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>


> $query = "INSERT INTO photo SET photoID=NULL,
> photoFileName='$photoFileName', title='$title',
> description='$description',
> pris=$pris*100";
> MVH Martin S



Thomas Jensen (10-08-2003)
Kommentar
Fra : Thomas Jensen


Dato : 10-08-03 22:49


"Martin Sveegaard" <sveegaard@tdcadslFJERNDETTE.dk> skrev i en meddelelse
news:r5bdjv8de49cotfcgkatrk5egsgju6amq5@4ax.com...
> On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>
> $query = "INSERT INTO photo SET photoID=NULL,
> photoFileName='$photoFileName', title='$title',
> description='$description',
> pris=$pris*100";
> MVH Martin S


TAKKER!!!



Thomas Jensen (10-08-2003)
Kommentar
Fra : Thomas Jensen


Dato : 10-08-03 23:05


"Martin Sveegaard" <sveegaard@tdcadslFJERNDETTE.dk> skrev i en meddelelse
news:r5bdjv8de49cotfcgkatrk5egsgju6amq5@4ax.com...
> On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>
> wrote:
> $query = "INSERT INTO photo SET photoID=NULL,
> photoFileName='$photoFileName', title='$title',
> description='$description',
> pris=$pris*100";
> MVH Martin S

Hmmm, fik fejl når jeg brugte, (komma) men lavede en str_replace og nu kører
det

$db_pris=str_replace(",",".",$pris);
Erstetter komma med punktum inden det sendes til database

Thomas



Peter Sepstrup (10-08-2003)
Kommentar
Fra : Peter Sepstrup


Dato : 10-08-03 23:08

Thomas Jensen skrev:

> $db_pris=str_replace(",",".",$pris);

Lige ved første øjekast så ser den lidt sjov ud den str_replace :D
--
Mvh. Peter.
___________________________________
www.SepstrupNET.dk & www.PHP-FAQ.dk

Thomas Jensen (12-08-2003)
Kommentar
Fra : Thomas Jensen


Dato : 12-08-03 07:47


"Peter Sepstrup" <peter@_REMOVE_sepstrupnet.dk> skrev i en meddelelse
news:3f36c235$0$83068$edfadb0f@dtext01.news.tele.dk...
snip
> Lige ved første øjekast så ser den lidt sjov ud den str_replace :D

He he
Så må den jo være noget at det bedste programmering man kan lave:
Det er sjovt og det virker :)
Thomas



Arne Feldborg (07-08-2003)
Kommentar
Fra : Arne Feldborg


Dato : 07-08-03 23:26

"Jimmy" <nyhedsgruppe@get2net.dk> skrev Thu, 7 Aug 2003 20:14:49 +0200


>Jeg vil *klart* anbefale at anvende en INT.
>
>Når du henter din data ud kan du gøre det via:
>
>SELECT (foo/100) AS foo FROM bar
>
Skal det forståes derhen, at du generelt vil fraråde at gemme decimaltal
i en *sql-database.?


--
mvh, A:\Feldborg

Folketælllinger Hammerum og Bøling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/

Jimmy (07-08-2003)
Kommentar
Fra : Jimmy


Dato : 07-08-03 23:30


"Arne Feldborg" <feldborg@haunstrup.dk> wrote in message
news:6vi5jv0fee5kcnalhit6p6ng71bf8kp371@news2.tele.dk...
> "Jimmy" <nyhedsgruppe@get2net.dk> skrev Thu, 7 Aug 2003 20:14:49 +0200
>
>
> >Jeg vil *klart* anbefale at anvende en INT.
> >
> >Når du henter din data ud kan du gøre det via:
> >
> >SELECT (foo/100) AS foo FROM bar
> >
> Skal det forståes derhen, at du generelt vil fraråde at gemme decimaltal
> i en *sql-database.?


Der er fordele og ulemper ved begge tilgangsvinkler.

Mvh
Jimmy



Arne Feldborg (08-08-2003)
Kommentar
Fra : Arne Feldborg


Dato : 08-08-03 00:27

"Jimmy" <nyhedsgruppe@get2net.dk> skrev Fri, 8 Aug 2003 00:29:59 +0200

>> Skal det forståes derhen, at du generelt vil fraråde at gemme decimaltal
>> i en *sql-database.?
>
>Der er fordele og ulemper ved begge tilgangsvinkler.
>
Ja, undskyld. Jeg er vist ikke helt med.

Jeg kan udmærket forstå selve fremgangsmåden i at lægge et decimaltal
ind i databasen som et heltal (feks. hvis det er kroner og ører ganger
man med 100 når man lægger tallet ind og dividerer med 100 når man
trækker det ud, og tilsvarende hvis det er kilometer og meter ganger man
med 1000).
Men hvad er selve ideen i at gøre sådanne.?

Kan man ikke bare lægge et tal (feks. 20.49) ind i databasen, og så
hente samme tal ud igen.?

Eller går der koks i decimaltegnet afhængig af forskellige opsætninger.?


--
mvh, A:\Feldborg

Folketælllinger Hammerum og Bøling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/

Morten Guldager (08-08-2003)
Kommentar
Fra : Morten Guldager


Dato : 08-08-03 20:37

Thu, 07 Aug 2003 at 23:26 GMT Arne Feldborg wrote
>
> Kan man ikke bare lægge et tal (feks. 20.49) ind i databasen, og så
> hente samme tal ud igen.?

Tjo, du skal se på hvordan din database, i dette tilfælde MySQL lagrer
tallet.
Den ligefremme datatype er nok en floatingpointtype hvis man koder
noget med penge for første gang.

Men problemet med floatingpoint er at man ikke sådan rigtig har styr på
præcisionen.

Det er ikke altid at en værdi er den samme efter man har lagt 10 til og
trukket dem fra igen.

Ved at bruge en integer og selv gange med de 100, hvis vi taler kroner/ører,
har man 100% styr på værdien.

I gamle dage var integeroerationer også langt hurtigere end floatingpoint ditto.
Jeg ved ikke rigtig om det også et tilfældet på en moderne CPU.

Men det primære argument er afrundingsbøvlet.


/Morten

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408521
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste