1.1输出最小值最大值minmaxFunc
(1)函数头
static void minmaxFunc( sqlite3_context context, int argc, sqlite3_value *argv)
通过变量mask 返回最值
(2)函数实现流程
参数argc>1是否保持,判断用户数据的内容是否为0,如果为0,返回最小值0,反之返回最大值-1
断言最值为-1或0是否保持,判断自定义接口的第一个参数是否为空,如果为空,返回结果
如果不为空,循环变量,比较参数大小 返回最值
1.2 返回随机整数randomFunc
(1)函数头
static void randomFunc( sqlite3_context context, int NotUsed, sqlite3_value *NotUsed2)
SQLite RANDOM 函数返回一个介于 -9223372036854775808 和 +9223372036854775807之间的伪随机整数。
(2)函数实现流程
利用随机函数返回随机数,如果随机变量r小于0,为负值,取其绝对值,返回正值即随机数
1.3 返回数值的绝对值absFunc
(1)函数头
static void absFunc(sqlite3_context context, int argc, sqlite3_value *argv)
返回数值的绝对值参数X
(2)函数实现流程
如果参数argv[0]是SQLITE_INTEGER,赋值给变量ival,若ival小于0,对ival取绝对值,返回绝对值ival
如果参数argv[0]是SQLITE_NULL,返回空
如果参数argv[0]与上面不匹配,默认赋值给一个双精度度rval,若rval小于0,对rval取绝对值,返回绝对值rval
如图为absFunc函数实现流程
1.4返回数字表达式并四舍五入为指定的长度或精度。 roundFunc
(1) 函数头
static void roundFunc(sqlite3_context context, /数字表达式*/
int argc, /将要四舍五入的精度/
sqlite3_value *argv/要执行的操作的类型*/
) (2)函数实现流程
判断将要四舍五入的精度的变量r的范围,如精度大于等于0且小于等于后面小数点的位数,则返回四舍五入会的数值,如round(865.23,1)865.20
若变量r小于0且小于等于小数点前的数字个数,则输出四舍五入会的数值 如round(865.23,-1)870.00
若变量r小于0且大于小数点前的数字个数,则返回0,如round(865.23,-4)0