Tôi có một bảng sqlite có chứa tệp BLOB, nhưng cần phải kiểm tra kích thước/chiều dài trên blob, làm cách nào để thực hiện điều đó?Làm cách nào để tìm độ dài (kích thước) của một đốm màu nhị phân trong sqlite
Theo một số tài liệu tôi đã tìm, sử dụng độ dài (blob) sẽ không hoạt động, bởi vì length() chỉ hoạt động trên văn bản và sẽ ngừng đếm sau NULL đầu tiên. Các thử nghiệm thực nghiệm của tôi đã cho thấy điều này là đúng.
Tôi đang sử dụng SQLite 3.4.2
Cập nhật:
Vì vậy, khi các SQLite 3.7.6 nó xuất hiện như là mặc dù chiều dài() chức năng trả về giá trị đúng của các đốm màu - Tôi đã kiểm tra các bản ghi thay đổi khác nhau của sqlite, nhưng không thấy trong phiên bản này đã được sửa chữa.
Từ Sqlite 3.7.6:
payload_id|length(payload)|length(hex(payload))/2 1807913|194|194 1807914|171|171
Các documentation được thay đổi để phản ánh điều này.
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.
Đối với một đốm màu nhị phân?Điều đó sẽ vi phạm tài liệu SQLite cho biết các đốm màu được coi là văn bản và độ dài như vậy() chỉ chính xác cho đến khi nó tìm thấy ký tự '\ 0'. – Petriborg
Tài liệu hiện tại tại http://www.sqlite.org/lang_corefunc.html nói "Hàm length (X) trả về độ dài của X trong ký tự nếu X là một chuỗi, hoặc tính bằng byte nếu X là một đốm màu". – Govert