57 Stimmen

Wie finde ich die Länge (Größe) eines binären Blob in Sqlite

Ich habe eine Sqlite-Tabelle, die eine BLOB-Datei enthält, aber müssen eine Größe/Längenprüfung auf den Blob zu tun, wie kann ich das tun?

Laut der Dokumentation, die ich gefunden habe, wird length(blob) nicht funktionieren, weil length() nur für Texte funktioniert und nach dem ersten NULL aufhört zu zählen. Meine empirischen Tests haben gezeigt, dass dies der Fall ist.

Ich verwende SQLite 3.4.2


Aktualisierungen:

Ab SQLite 3.7.6 scheint es so, als ob die Funktion length() den korrekten Wert von Blobs zurückgibt - ich habe verschiedene Änderungsprotokolle von Sqlite überprüft, aber nicht gesehen, in welcher Version dies korrigiert wurde.

Ab Sqlite 3.7.6:

payload\_id|length(payload)|length(hex(payload))/2
1807913|194|194
1807914|171|171

El Dokumentation wurde geändert, um dies widerzuspiegeln.

length(X)   The length(X) function returns the length of X in characters if X is
            a string, or in bytes if X is a blob. If X is NULL then length(X) is
            NULL. If X is numeric then length(X) returns the length of a string 
            representation of X.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X