SQLite中标量SQL函数与聚合SQL函数的区别

Difference between scalar SQL functions and aggregate SQL functions in SQLite

本文关键字:SQL 函数 区别 SQLite 标量      更新时间:2023-10-16

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必须为空,对于聚合SQL函数,xFunc必须为空。

标量函数是操作标量值的函数——也就是说,它直接接受一个(或多个)输入值作为参数并返回一个值。

aggregate函数是对聚合数据进行操作的函数——也就是说,它接受完整的数据集作为输入,并返回从该集合中的所有值计算得出的值。

顺便说一下,这些是"标量"answers"聚合"的标准定义,你可以在任何字典中找到,如果你搜索"标量函数"answers"聚合函数",所有这些链接都在谷歌搜索结果的前五名。没关系,我们希望StackOverflow成为这类问题的"权威"答案,但出于"教人钓鱼"的兴趣,我觉得有必要提醒你,在让别人帮助回答你的问题之前,你应该做自己的功课。