Код: Выделить всё
subblobstr(BLOB_DATA,2,3)
Код: Выделить всё
#include
#include
#include "sqlite3ext.h"
SQLITE_EXTENSION_INIT1
void subblobstr(sqlite3_context* ctx, int argc, sqlite3_value* argv[])
{
const char* blobdata;
int blob_len, start, slen;
blobdata = (char*)sqlite3_value_blob(argv[0]);
blob_len = sqlite3_value_bytes(argv[0]);
start = sqlite3_value_int(argv[1]) - 1;
slen = sqlite3_value_int(argv[2]);
sqlite3_result_blob(ctx, blobdata + start, slen, SQLITE_TRANSIENT);
}
int sqlite3SubBlobStrInit(sqlite3 *db){
sqlite3_create_function(db, "subblobstr",3,SQLITE_ANY, 0, subblobstr, 0, 0);
return 0;
}
int sqlite3_extension_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
){
SQLITE_EXTENSION_INIT2(pApi)
return sqlite3SubBlobStrInit(db);
}
cid
имя
тип
0
ИМЯ
ТЕКСТ
1
BLOB_DATA
BLOB
Код: Выделить всё
BLOB_DATAТаблица содержит много данных, но substr(BLOB_DATA,1,10) возвращает не более одной цифры.

Цитата из CL:
значения в таблице являются строками, и в этом случае вам следует преобразовать их в большие двоичные объекты примерно так:
Код: Выделить всё
UPDATE MyTable SET blob_data = CAST(blob_data AS BLOB)После выполнения приведенного выше оператора SQL произойдет сбой оболочки sqlite. (SQLite версии 3.7.15.2 Win7)
Я использую базу данных SQLite, но браузер для установки типа BLOB_DATA сначала (BLOB), затем substr(BLOB_DATA,1,10) по-прежнему возвращает 1 цифру.
Подробнее здесь: https://stackoverflow.com/questions/153 ... blob-field
Мобильная версия