Tengo una tabla sqlite que contiene un archivo BLOB, pero necesito hacer una verificación de tamaño/longitud en el blob, ¿cómo puedo hacer eso?¿Cómo puedo encontrar la longitud (tamaño) de un blob binario en sqlite?
De acuerdo con alguna documentación que encontré, el uso de la longitud (blob) no funcionará, porque la longitud() solo funciona en los textos y dejará de contar después de la primera NULL. Mis pruebas empíricas han demostrado que esto es cierto.
estoy usando SQLite 3.4.2
actualizaciones:
Así como de SQLite 3.7.6 parece como si la función de longitud() devuelve el valor correcto de gotas - Revisé varios registros de cambios de sqlite, pero no vi en qué versión se corrigió esto.
De SQLite 3.7.6:
payload_id|length(payload)|length(hex(payload))/2 1807913|194|194 1807914|171|171
El documentation fue cambiado para reflejar esto.
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.
¿Para un blob binario?Eso sería una violación de la documentación de SQLite que dice que los blobs se tratan como texto y, como tal, length() solo es correcto hasta que encuentra un carácter '\ 0'. – Petriborg
La documentación actual en http://www.sqlite.org/lang_corefunc.html dice "La función de longitud (X) devuelve la longitud de X en caracteres si X es una cadena, o en bytes si X es una burbuja". – Govert