Avatar billede ml Nybegynder
02. oktober 2002 - 14:21 Der er 3 kommentarer og
1 løsning

AVG() af decimaltal gemt som Char ?

Jeg vil gerne have gennemsnittet af værdier gemt som Char. Men den tager kun tallet før "," med. Tal gemt kunne være "4,5" "3" #1,5" gemt i en Char(3)

Findes der en eller anden fiks måde at løse det problem på ? Udover at lave datatypen om i databasen...

Select sum(rating) as rating_avg FROM tabel
Avatar billede disky Nybegynder
02. oktober 2002 - 14:46 #1
så skal du lave konverteringen til tal i selve querien, om man kan det ved jeg faktisk ikke.

Men jeg ville nok ændre datatypen i basen.
Avatar billede chrlilje Nybegynder
02. oktober 2002 - 14:53 #2
Problemet er at du bruger ',' som decimaladskiller. Bruges '.' kan mysql selv finde ud af at ændre type.
  "select sum(REPLACE(rating,',','.')) as rating_avg from test_number "
Ovenstående er et skridt på vejen, men den tager ikke højde for #1,5 ... så skal du putte en replace mere på...
Avatar billede chrlilje Nybegynder
02. oktober 2002 - 15:01 #3
SELECT SUM(REPLACE(REPLACE(rating,',','.'),'#','')) AS rating_n FROM table

Du kan muligvis også bruge noget regexp - Men det ser ikke ud som om at mysql understøtter reg_exp - replace...
Avatar billede ml Nybegynder
03. oktober 2002 - 10:35 #4
Tak for det! REPLACE(rating,',','.') virker, syndes ellers jeg havde prøvet den ;)

Og #1,5" var bare en tastefejl, skulle have været "1,5" :)
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