SELECT Len(fältnamn) FROM tabell
...om du nu med "storleken på en post" menar längden på innehållet i ett fält.
8 svar · 370 visningar · startad av lillebror
Som rubriken antyder undrar jag om det finns en funktion fördefinierad i SQL som kan räkna ut storleken på en viss post. Har för mig att jag sätt det tidigare i en tråd men kunde inte hitta igen den nu :)
SELECT Len(fältnamn) FROM tabell
...om du nu med "storleken på en post" menar längden på innehållet i ett fält.
@nders skrev:
SELECT Len(fältnamn) FROM tabell...om du nu med "storleken på en post" menar längden på innehållet i ett fält.
Inte den storleken :) ... utan den som normalt visas i mailprogram hur stort ett meddelande är i Kb...
Hmm...
Har du mailen i en databas? Vilken dbms? Vilka fälttyper används för att lagra mailen? Var har du dina attachments?
Det är väl bara att lägga ihop fältlängden för de aktuella fälten och räkna om till kb, eller missförstår jag frågan totalt?
@nders skrev:
Hmm...
Har du mailen i en databas? Vilken dbms? Vilka fälttyper används för att lagra mailen? Var har du dina attachments?
Det är väl bara att lägga ihop fältlängden för de aktuella fälten och räkna om till kb, eller missförstår jag frågan totalt?
Det kan vara jag som uttryckte mig lite luddigt.
Jag har ett e-meddelande system i något som kan liknas vid en portal. Där lagrar jag internmeddelandena mellan användare i en MySQL-databas. Jag vill exempelvis kunna räkna både den totala storleken för alla meddelanden en användare har i sin e-brevlåda men även storleken för ett enskilt meddelande. Anledningen till att jag vill kunna göra det är för att jag har olika begränsningar storleksmässigt för brevlådorna för olika användarnivåer...
Hoppas jag var lite tydligare nu :)
Ok. Om vi utgår ifrån att ett tecken är en byte (kan ju variera beroende på datatyp) så skulle det kanske kunna se ut så här om man vill räkna ut hur många kb en viss användare använt.
SELECT SUM(LEN(fältnamn)) / 1024 AS TotalSize FROM tabellen WHERE userid = 4711
Skulle det kunna se ut så här med mina fält?
SELECT SUM(LEN(memberID)) + SUM(LEN(posted)) + SUM(LEN(subject)) + SUM(LEN(content)) + SUM(LEN(folderID)) +SUM(LEN(fromID)) + SUM(LEN(toID)) / 1024 AS TotalSize FROM tabellen WHERE userid = 4711
Kommer inte ihåg varför man delar med 1024 och inte 1000 när man ska göra om det till Kb?
LEN() är en funktion som returnerar längden på data i fält av typen varchar / char / text. Om du använder andra datatyper så får du lägga till det på annat sätt.
Med rätt parenteser så borde det bli så här:
SELECT (SUM(LEN(memberID)) + SUM(LEN(posted)) + SUM(LEN(subject)) + SUM(LEN(content)) + SUM(LEN(folderID)) +SUM(LEN(fromID)) + SUM(LEN(toID))) / 1024 AS TotalSize FROM tabellen WHERE userid = 4711
En kb är 2^10 bytes, och inte exakt 1000 bytes.