I have an sqlite table that contains a BLOB file, but need to do a size/length check on the blob, how do I do that?
According to some documentation I did find, using length(blob) won't work, because length() only works on texts and will stop counting after the first NULL. My empirical tests have shown this to be true.
I'm using SQLite 3.4.2
Updates:
So as of SQLite 3.7.6 it appears as though the length() function returns the correct value of blobs - I checked various change-logs of sqlite, but did not see in what version this was corrected.
From Sqlite 3.7.6:
payload_id|length(payload)|length(hex(payload))/2 1807913|194|194 1807914|171|171
The documentation was changed to reflect this.
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.
There is a simple MySQL String function, to find the size of BLOB data, OCTET_LENGTH. This function returns the length of BLOB in bytes. You can also use LENGTH function, because OCTET_LENGTH is synonym for LENGTH.
BLOB: Can handle up to 65,535 bytes of data. MEDIUMBLOB: The maximum length supported is 16,777,215 bytes. LONGBLOB: Stores up to 4,294,967,295 bytes of data.
A BLOB (binary large object) is a varying-length binary string that can be up to 2,147,483,647 characters long.
BLOB stands for a binary large object that is a collection of binary data stored as a value in the database. By using the BLOB, you can store the documents, images, and other multimedia files in the database. We will create a new table named documents for the sake of demonstration.
haven't had this problem, but you could try length(hex(glob))/2
Update (Aug-2012): For SQLite 3.7.6 (released April 12, 2011) and later, length(blob_column)
works as expected both both text and binary data.
for me length(blob)
works just fine, gives the same results like the other.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With