const void *sqlite3_value_blob(sqlite3_value*);
int sqlite3_value_bytes(sqlite3_value*);
int sqlite3_value_bytes16(sqlite3_value*);
double sqlite3_value_double(sqlite3_value*);
int sqlite3_value_int(sqlite3_value*);
long long int sqlite3_value_int64(sqlite3_value*);
const unsigned char *sqlite3_value_text(sqlite3_value*);
const void *sqlite3_value_text16(sqlite3_value*);
const void *sqlite3_value_text16be(sqlite3_value*);
const void *sqlite3_value_text16le(sqlite3_value*);
int sqlite3_value_type(sqlite3_value*);
These API functions allow user-defined functions to access input data passed in by arguments.
If the result is a BLOB, then the sqlite3_value_blob() function returns the number of bytes in the BLOB. No type conversions occur. If the result is a string (or a number, which can be converted into a string), then sqlite3_value_bytes() converts the value into UTF-8 encoding and returns the number of bytes in the resulting string, not including the \000 terminator. The sqlite3_value_bytes16() function converts the value into UTF-16 encoding and returns the number of bytes (not characters) in the resulting string, not including the \u0000 terminator.
| Internal Type | Requested Type | Conversion |
|---|---|---|
| NULL | INTEGER | Result is 0 |
| NULL | FLOAT | Result is 0.0 |
| NULL | TEXT | Result is NULL pointer |
| NULL | BLOB | Result is NULL pointer |
| INTEGER | FLOAT | Convert from integer to float |
| INTEGER | TEXT | ASCII rendering of the integer |
| INTEGER | BLOB | Same as for INTEGER to TEXT |
| FLOAT | INTEGER | Convert from float to integer |
| FLOAT | TEXT | ASCII rendering of the float |
| FLOAT | BLOB | Same as FLOAT to TEXT |
| TEXT | INTEGER | Use atoi() |
| TEXT | FLOAT | Use atof() |
| TEXT | BLOB | No change |
| BLOB | INTEGER | Convert to TEXT, then use atoi() |
| BLOB | FLOAT | Convert to TEXT, then use atof() |
| BLOB | TEXT | Add a \000 terminator if needed |