SQLite中标量SQL函数和聚合SQL函数之间的区别

时间:2011-07-17 05:36:59

标签: c++ sqlite

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函数,xStepxFinal必须为null,对于聚合SQL函数,xFunc必须为null。我需要知道使用哪一个以及有什么区别。

1 个答案:

答案 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,但为了“教人钓鱼”,我觉得有必要提醒你,在让别人帮忙回答你的问题之前,你应该做自己的功课。