Aggregat-Funktion fürBlobs

Aggregat-Funktion fürBlobs

am 02.08.2006 08:53:24 von Michael Hufschmidt

Hallo,

ich habe eine Tabelle u.a. mit den Spalten
id int(11) NOT NULL,
pict mediumblob,
und möchte in einer Abfrage die Größe der pict pro id ermitteln.
Normalerweise würde ich etwas wie
SELECT id, SIZEOF(pict) AS groesse FROM binaries GROUP BY id;
verwenden. Leider gibt es keine Aggregat-Funktion, die mir die Größe (Anzahl
der Bytes) eines Blobs liefert. Oder doch? Oder gibt es da einen Trick?

Für Tipps wäre ich sehr dankbar?
Michael

Re: Aggregat-Funktion für Blobs

am 02.08.2006 09:48:01 von Christian Kirsch

Michael Hufschmidt schrieb:
> Hallo,
>
> ich habe eine Tabelle u.a. mit den Spalten
> id int(11) NOT NULL,
> pict mediumblob,
> und möchte in einer Abfrage die Größe der pict pro id ermitteln.
> Normalerweise würde ich etwas wie
> SELECT id, SIZEOF(pict) AS groesse FROM binaries GROUP BY id;

Wenn ID das ist, was ich vermutet - was soll denn dann GROUP BY bewirken?

> verwenden. Leider gibt es keine Aggregat-Funktion, die mir die Größe (Anzahl
> der Bytes) eines Blobs liefert.

Aggregatfunktionen aggregieren mehrere Datensätze. Das willst Du doch
offenbar gar nicht.

> Oder doch? Oder gibt es da einen Trick?

Ja, ein ganz ungewöhnlicher. Fachleute kürzen ihn mit RTFM ab, aber
was das bedeutet, weiß niemand...

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Re: Aggregat-Funktion fürBlobs

am 02.08.2006 12:10:56 von Michael Hufschmidt

Christian Kirsch wrote:

> Michael Hufschmidt schrieb:
>> Hallo,
>>
>> ich habe eine Tabelle u.a. mit den Spalten
>> id int(11) NOT NULL,
>> pict mediumblob,
>> und möchte in einer Abfrage die Größe der pict pro id ermitteln.

> Wenn ID das ist, was ich vermutet - was soll denn dann GROUP BY bewirken?
ok, das war Blödsinn

> Ja, ein ganz ungewöhnlicher. Fachleute kürzen ihn mit RTFM ab, aber
Message verstanden.

Ich hab's nun mit
SELECT id, CHAR_LENGTH(pict) AS groesse FROM binaries;
probiert. Da kommmt ein vermutlich korrektes Ergebnis. Es bleibt aber eine
Unsicherheit: Laut Manual (-> rtfm) erwartet CHAR_LENGTH() ein Argument vom
Typ String. Ist das Ergebnis auch dann immer (!) korrekt, wenn ich dem ein
Blob übergebe?

Michael

Re: Aggregat-Funktion für Blobs

am 02.08.2006 12:28:57 von Christian Kirsch

Michael Hufschmidt schrieb:
> Christian Kirsch wrote:

>> Ja, ein ganz ungewöhnlicher. Fachleute kürzen ihn mit RTFM ab, aber
> Message verstanden.
>
> Ich hab's nun mit
> SELECT id, CHAR_LENGTH(pict) AS groesse FROM binaries;
> probiert. Da kommmt ein vermutlich korrektes Ergebnis. Es bleibt aber eine
> Unsicherheit: Laut Manual (-> rtfm) erwartet CHAR_LENGTH() ein Argument vom
> Typ String. Ist das Ergebnis auch dann immer (!) korrekt, wenn ich dem ein
> Blob übergebe?

So ganz ist die Botschaft "RTFM" nicht verstanden, oder?

http://dev.mysql.com/doc/refman/5.0/en/string-types.html

Man kann so ein Handbuch tatsächlich von vorne bis hinten durchlesen
und mächtig was dabei lernen: Read the full manual - oder blättere
doch wenigstens mal ein bisschen darin.