SQLite中标量SQL函数和聚合SQL函数之间的确切区别是什么?
尝试在SQLite中创建新函数时,我遇到以下代码问题:
int sqlite3_create_function(
sqlite3 *db,
const char *zFunctionName,
int nArg,
int eTextRep,
void *pApp,
void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
void (*xFinal)(sqlite3_context*)
);
对于标量SQL函数,xStep
和xFinal
必须为null,对于聚合SQL函数,xFunc
必须为null。我需要知道使用哪一个以及有什么区别。
答案 0 :(得分:14)
scalar function是一个对scalar值进行操作的函数 - 也就是说,它直接将一个(或多个)输入值作为参数并返回一个值。
aggregate function是一个对aggregate数据进行操作的函数 - 也就是说,它将一个完整的 set 数据作为输入,并返回一个由集合中的所有值。
顺便说一句,这些是您可以在任何字典中找到的“标量”和“聚合”的标准定义,如果您搜索“标量函数”和“标量函数”,则所有这些链接都位于Google搜索结果的前五位集合函数“。 That's OK, we want StackOverflow to become the "definitive" answer for questions like this,但为了“教人钓鱼”,我觉得有必要提醒你,在让别人帮忙回答你的问题之前,你应该做自己的功课。