值类表示任何类型的单个值。
API Reference Overview
void duckdb_destroy_value(duckdb_value *value);
duckdb_value duckdb_create_varchar(const char *text);
duckdb_value duckdb_create_varchar_length(const char *text, idx_t length);
duckdb_value duckdb_create_bool(bool input);
duckdb_value duckdb_create_int8(int8_t input);
duckdb_value duckdb_create_uint8(uint8_t input);
duckdb_value duckdb_create_int16(int16_t input);
duckdb_value duckdb_create_uint16(uint16_t input);
duckdb_value duckdb_create_int32(int32_t input);
duckdb_value duckdb_create_uint32(uint32_t input);
duckdb_value duckdb_create_uint64(uint64_t input);
duckdb_value duckdb_create_int64(int64_t val);
duckdb_value duckdb_create_hugeint(duckdb_hugeint input);
duckdb_value duckdb_create_uhugeint(duckdb_uhugeint input);
duckdb_value duckdb_create_float(float input);
duckdb_value duckdb_create_double(double input);
duckdb_value duckdb_create_date(duckdb_date input);
duckdb_value duckdb_create_time(duckdb_time input);
duckdb_value duckdb_create_time_tz_value(duckdb_time_tz value);
duckdb_value duckdb_create_timestamp(duckdb_timestamp input);
duckdb_value duckdb_create_interval(duckdb_interval input);
duckdb_value duckdb_create_blob(const uint8_t *data, idx_t length);
bool duckdb_get_bool(duckdb_value val);
int8_t duckdb_get_int8(duckdb_value val);
uint8_t duckdb_get_uint8(duckdb_value val);
int16_t duckdb_get_int16(duckdb_value val);
uint16_t duckdb_get_uint16(duckdb_value val);
int32_t duckdb_get_int32(duckdb_value val);
uint32_t duckdb_get_uint32(duckdb_value val);
int64_t duckdb_get_int64(duckdb_value val);
uint64_t duckdb_get_uint64(duckdb_value val);
duckdb_hugeint duckdb_get_hugeint(duckdb_value val);
duckdb_uhugeint duckdb_get_uhugeint(duckdb_value val);
float duckdb_get_float(duckdb_value val);
double duckdb_get_double(duckdb_value val);
duckdb_date duckdb_get_date(duckdb_value val);
duckdb_time duckdb_get_time(duckdb_value val);
duckdb_time_tz duckdb_get_time_tz(duckdb_value val);
duckdb_timestamp duckdb_get_timestamp(duckdb_value val);
duckdb_interval duckdb_get_interval(duckdb_value val);
duckdb_logical_type duckdb_get_value_type(duckdb_value val);
duckdb_blob duckdb_get_blob(duckdb_value val);
char *duckdb_get_varchar(duckdb_value value);
duckdb_value duckdb_create_struct_value(duckdb_logical_type type, duckdb_value *values);
duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
duckdb_value duckdb_create_array_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
idx_t duckdb_get_map_size(duckdb_value value);
duckdb_value duckdb_get_map_key(duckdb_value value, idx_t index);
duckdb_value duckdb_get_map_value(duckdb_value value, idx_t index);
duckdb_destroy_value
销毁该值并释放为该类型分配的所有内存。
Syntax
void duckdb_destroy_value(
duckdb_value *value
);
Parameters
value
: 要销毁的值。
duckdb_create_varchar
从以null结尾的字符串创建一个值
Syntax
duckdb_value duckdb_create_varchar(
const char *text
);
Parameters
text
: 以空字符结尾的字符串
Return Value
该值。必须使用duckdb_destroy_value
销毁。
duckdb_create_varchar_length
从字符串创建一个值
Syntax
duckdb_value duckdb_create_varchar_length(
const char *text,
idx_t length
);
Parameters
text
: 文本length
: 文本的长度
Return Value
该值。必须使用duckdb_destroy_value
销毁。
duckdb_create_bool
从布尔值创建一个值
Syntax
duckdb_value duckdb_create_bool(
bool input
);
Parameters
input
: 布尔值
Return Value
该值。必须使用duckdb_destroy_value
销毁。
duckdb_create_int8
从 int8_t(一个 tinyint)创建一个值
Syntax
duckdb_value duckdb_create_int8(
int8_t input
);
Parameters
input
: 小整数值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint8
从uint8_t(一个utinyint)创建一个值
Syntax
duckdb_value duckdb_create_uint8(
uint8_t input
);
Parameters
input
: utinyint 值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int16
从 int16_t(一个小整数)创建一个值
Syntax
duckdb_value duckdb_create_int16(
int16_t input
);
Parameters
input
: 小整数值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint16
从 uint16_t(一个 usmallint)创建一个值
Syntax
duckdb_value duckdb_create_uint16(
uint16_t input
);
Parameters
input
: usmallint 值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int32
从 int32_t(一个整数)创建一个值
Syntax
duckdb_value duckdb_create_int32(
int32_t input
);
Parameters
input
: 整数值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint32
从 uint32_t(一个无符号整数)创建一个值
Syntax
duckdb_value duckdb_create_uint32(
uint32_t input
);
Parameters
input
: uinteger 值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint64
从 uint64_t(一个 ubigint)创建一个值
Syntax
duckdb_value duckdb_create_uint64(
uint64_t input
);
Parameters
input
: ubigint 值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int64
从int64创建一个值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_int64(
int64_t val
);
duckdb_create_hugeint
从hugeint创建一个值
Syntax
duckdb_value duckdb_create_hugeint(
duckdb_hugeint input
);
Parameters
input
: 巨大的整数值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uhugeint
从uhugeint创建一个值
Syntax
duckdb_value duckdb_create_uhugeint(
duckdb_uhugeint input
);
Parameters
input
: uhugeint 值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_float
从浮点数创建一个值
Syntax
duckdb_value duckdb_create_float(
float input
);
Parameters
input
: 浮点数值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_double
从双精度数创建一个值
Syntax
duckdb_value duckdb_create_double(
double input
);
Parameters
input
: 双精度值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_date
从日期创建一个值
Syntax
duckdb_value duckdb_create_date(
duckdb_date input
);
Parameters
input
: 日期值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_time
从时间创建一个值
Syntax
duckdb_value duckdb_create_time(
duckdb_time input
);
Parameters
input
: 时间值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_time_tz_value
从time_tz创建一个值。
不要与duckdb_create_time_tz
混淆,后者创建的是duckdb_time_tz_t。
Syntax
duckdb_value duckdb_create_time_tz_value(
duckdb_time_tz value
);
Parameters
value
: 时间时区值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_timestamp
从时间戳创建一个值
Syntax
duckdb_value duckdb_create_timestamp(
duckdb_timestamp input
);
Parameters
input
: 时间戳值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_interval
从间隔创建值
Syntax
duckdb_value duckdb_create_interval(
duckdb_interval input
);
Parameters
input
: 间隔值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_blob
从blob创建一个值
Syntax
duckdb_value duckdb_create_blob(
const uint8_t *data,
idx_t length
);
Parameters
data
: 二进制数据length
: blob数据的长度
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_get_bool
返回给定值的布尔值。
Syntax
bool duckdb_get_bool(
duckdb_value val
);
Parameters
val
: 一个包含布尔值的 duckdb_value
Return Value
一个布尔值,如果无法转换则为false
duckdb_get_int8
返回给定值的int8_t值。
Syntax
int8_t duckdb_get_int8(
duckdb_value val
);
Parameters
val
: 一个包含 tinyint 的 duckdb_value
Return Value
一个 int8_t,如果值无法转换则为 MinValue
duckdb_get_uint8
返回给定值的uint8_t值。
Syntax
uint8_t duckdb_get_uint8(
duckdb_value val
);
Parameters
val
: 一个包含 utinyint 的 duckdb_value
Return Value
一个 uint8_t,如果值无法转换则为 MinValue
duckdb_get_int16
返回给定值的int16_t值。
Syntax
int16_t duckdb_get_int16(
duckdb_value val
);
Parameters
val
: 一个包含小整数的 duckdb_value
Return Value
一个 int16_t,如果值无法转换则为 MinValue
duckdb_get_uint16
返回给定值的 uint16_t 值。
Syntax
uint16_t duckdb_get_uint16(
duckdb_value val
);
Parameters
val
: 一个包含 usmallint 的 duckdb_value
Return Value
一个 uint16_t,或者如果值无法转换则为 MinValue
duckdb_get_int32
返回给定值的 int32_t 值。
Syntax
int32_t duckdb_get_int32(
duckdb_value val
);
Parameters
val
: 一个包含整数的 duckdb_value
Return Value
一个 int32_t,如果值无法转换则为 MinValue
duckdb_get_uint32
返回给定值的uint32_t值。
Syntax
uint32_t duckdb_get_uint32(
duckdb_value val
);
Parameters
val
: 包含一个无符号整数的 duckdb_value
Return Value
一个 uint32_t,如果值无法转换则为 MinValue
duckdb_get_int64
返回给定值的int64_t值。
Syntax
int64_t duckdb_get_int64(
duckdb_value val
);
Parameters
val
: 一个包含 bigint 的 duckdb_value
Return Value
一个 int64_t,如果值无法转换则为 MinValue
duckdb_get_uint64
返回给定值的 uint64_t 值。
Syntax
uint64_t duckdb_get_uint64(
duckdb_value val
);
Parameters
val
: 包含一个 ubigint 的 duckdb_value
Return Value
一个 uint64_t,或者如果值无法转换则为 MinValue
duckdb_get_hugeint
返回给定值的hugeint值。
Syntax
duckdb_hugeint duckdb_get_hugeint(
duckdb_value val
);
Parameters
val
: 一个包含hugeint的duckdb_value
Return Value
一个duckdb_hugeint,如果值无法转换则为MinValue
duckdb_get_uhugeint
返回给定值的uhugeint值。
Syntax
duckdb_uhugeint duckdb_get_uhugeint(
duckdb_value val
);
Parameters
val
: 一个包含 uhugeint 的 duckdb_value
Return Value
一个duckdb_uhugeint,如果值无法转换则为MinValue
duckdb_get_float
返回给定值的浮点数值。
Syntax
float duckdb_get_float(
duckdb_value val
);
Parameters
val
: 一个包含浮点数的 duckdb_value
Return Value
一个浮点数,如果无法转换则为NAN
duckdb_get_double
返回给定值的双精度值。
Syntax
double duckdb_get_double(
duckdb_value val
);
Parameters
val
: 一个包含双精度浮点数的 duckdb_value
Return Value
一个双精度浮点数,如果无法转换则为NAN
duckdb_get_date
返回给定值的日期值。
Syntax
duckdb_date duckdb_get_date(
duckdb_value val
);
Parameters
val
: 一个包含日期的 duckdb_value
Return Value
一个duckdb_date,如果值无法转换则为MinValue
duckdb_get_time
返回给定值的时间值。
Syntax
duckdb_time duckdb_get_time(
duckdb_value val
);
Parameters
val
: 一个包含时间的 duckdb_value
Return Value
一个duckdb_time,如果值无法转换则为MinValue
duckdb_get_time_tz
返回给定值的time_tz值。
Syntax
duckdb_time_tz duckdb_get_time_tz(
duckdb_value val
);
Parameters
val
: 一个包含 time_tz 的 duckdb_value
Return Value
一个 duckdb_time_tz,如果值无法转换则为 MinValue
duckdb_get_timestamp
返回给定值的时间戳值。
Syntax
duckdb_timestamp duckdb_get_timestamp(
duckdb_value val
);
Parameters
val
: 一个包含时间戳的 duckdb_value
Return Value
一个duckdb_timestamp,如果值无法转换则为MinValue
duckdb_get_interval
返回给定值的间隔值。
Syntax
duckdb_interval duckdb_get_interval(
duckdb_value val
);
Parameters
val
: 一个包含间隔的 duckdb_value
Return Value
一个duckdb_interval,如果值无法转换则为MinValue
duckdb_get_value_type
返回给定值的类型。只要值未被销毁,类型就有效。 类型本身不能被销毁。
Syntax
duckdb_logical_type duckdb_get_value_type(
duckdb_value val
);
Parameters
val
: 一个 duckdb_value
Return Value
一个duckdb_logical_type。
duckdb_get_blob
返回给定值的blob值。
Syntax
duckdb_blob duckdb_get_blob(
duckdb_value val
);
Parameters
val
: 一个包含 blob 的 duckdb_value
Return Value
一个duckdb_blob
duckdb_get_varchar
获取给定值的字符串表示。
结果必须使用duckdb_free
销毁。
Syntax
char *duckdb_get_varchar(
duckdb_value value
);
Parameters
value
: 值
Return Value
字符串值。必须使用duckdb_free
销毁。
duckdb_create_struct_value
从类型和值数组创建一个结构体值。必须使用duckdb_destroy_value
销毁。
Syntax
duckdb_value duckdb_create_struct_value(
duckdb_logical_type type,
duckdb_value *values
);
Parameters
type
: 结构体的类型values
: 结构体字段的值
Return Value
结构体值,或nullptr,如果任何子类型是DUCKDB_TYPE_ANY
或DUCKDB_TYPE_INVALID
。
duckdb_create_list_value
从子(元素)类型和长度为value_count
的值数组创建一个列表值。
必须使用duckdb_destroy_value
销毁。
Syntax
duckdb_value duckdb_create_list_value(
duckdb_logical_type type,
duckdb_value *values,
idx_t value_count
);
Parameters
type
: 列表的类型values
: 列表的值value_count
: 列表中值的数量
Return Value
列表值,如果子类型是DUCKDB_TYPE_ANY
或DUCKDB_TYPE_INVALID
,则为nullptr。
duckdb_create_array_value
从子(元素)类型和长度为value_count
的值数组创建一个数组值。
必须使用duckdb_destroy_value
销毁。
Syntax
duckdb_value duckdb_create_array_value(
duckdb_logical_type type,
duckdb_value *values,
idx_t value_count
);
Parameters
type
: 数组的类型values
: 数组的值value_count
: 数组中的值的数量
Return Value
数组值,或nullptr,如果子类型是DUCKDB_TYPE_ANY
或DUCKDB_TYPE_INVALID
。
duckdb_get_map_size
返回MAP值中的元素数量。
Syntax
idx_t duckdb_get_map_size(
duckdb_value value
);
Parameters
value
: MAP值。
Return Value
地图中的元素数量。
duckdb_get_map_key
返回索引处的MAP键作为duckdb_value。
Syntax
duckdb_value duckdb_get_map_key(
duckdb_value value,
idx_t index
);
Parameters
value
: MAP 值。index
: 键的索引。
Return Value
键作为 duckdb_value。
duckdb_get_map_value
返回索引处的MAP值作为duckdb_value。
Syntax
duckdb_value duckdb_get_map_value(
duckdb_value value,
idx_t index
);
Parameters
value
: MAP 值。index
: 值的索引。
Return Value
值作为duckdb_value。