Functies II
Rekenkundige functies
Je hebt een bestand opgeslagen ter groote van 16448344 bytes in de tabel bestand, nu wil je het bestand in zowel kilobytes als megabytes laten zien aan de
bezoeker van je website, Het veld formaat is een integer van in dit geval tenminste 7 tekens lang waarin de grootte van het bestand staat.
Hoeveel kilobytes is het bestand
"SELECT (formaat/POW(2,10)) AS size FROM bestand"
De functie POW(n,p) berekent het getal van n tot de macht van p, in dit geval is een kilobyte 2 tot de macht van 10 aan bytes, en wordt die onder de naam 'size' in het resultaat teruggegeven.
Voor megabytes welke een byte tot de macht 20 zijn doe je:
"SELECT (formaat/POW(2,20)) AS size FROM bestand"
In combinatie met die functie CONCAT en het toegevoegde veld `naam` kan je het volgende doen:
"SELECT CONCAT('Het bestand ', naam , ' is ', ROUND((formaat/POW(2,10)),0) , ' Kbyte of ' , ROUND((formaat/POW(2,20)),0), ' Mbyte') AS zin FROM bestand"
(formaat/POW(2,10) en (formaat/POW(2,20)
Rekenen het bestandsformaat in kilobytes en megabytes uit.
ROUND((formaat/POW(2,10)),0)
ROUND (n,d) rond het getal n af in het aantal decimalen d, in dit voorbeeld 0 dus.
CONCAT('Het bestand ', naam , ' is ', ROUND((formaat/POW(2,10)),0) , ' Kbyte of ' , ROUND((formaat/POW(2,20)),0), ' Mbyte') AS zin
CONCAT voegt vervolgens de uitgerekende groottes met de door mij toevoegde strings samen onder de noemer 'zin'
zin geeft nu "Het bestand picture.jpg is 16063 Kbyte of 16 Mbyte"
Meer numerische functies zijn te vinden op:
http://dev.mysql.com/doc/mysql/en/Numeric_Functions.html