SQLite last_insert_rowid:刚插入的编号,为什么换连接或写日志后就变了 程序创建一条记录,接着写入另一张日志表,最后才查询 last_insert_rowid,拿到的编号却属于日志。另一次把查询交给连接池借出的新连接,结果又变成零。这个函数没有表名参数,因为它读取的是当前连接记住的最近插... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite instr 定位分隔符:零、空值和一基位置怎样决定拆分结果 一列备注按第一个冒号分成名称和内容,查询先用 instr 找位置,再交给 substr。普通样本没问题,缺少冒号的记录却可能被当成另一种合法拆分。原因是查找结果不仅是一串数字:它还包含“没找到”和“输入缺失”两种状态... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
SQLite CASE 求值次数:同一个函数写进两个 WHEN,为什么会执行两遍 给查询结果换一个状态名称,常见写法是连续判断某个表达式是否等于一、是否等于二。表达式如果只是读取普通列,看起来没什么区别;换成较昂贵的自定义函数后,第二个条件可能让同一函数再次执行。结果文字相同,并不说明求值过程也相... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite sum 与 total:空表返回不同,大整数求和也不能随意互换 没有记录时,汇总值该表示什么统计表在多数日期都有数据,偶尔某天没有记录,SUM 却返回 NULL,让调用方的加法报错。把它改成 TOTAL 看起来能直接获得零,但这还改变了返回类型和大整数计算方式。空值约定与数值范围... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
SQLite FILTER 条件聚合:合格数量为零的组,怎样仍然留在结果里 报表要显示零,筛选却删掉了整组按区域统计任务时,常常需要同时看到总任务数、成功数和有数值的成功记录数。如果把 status=ok 写进 WHERE,失败记录会先从输入里消失。一个区域若没有成功任务,连区域名称也不会出... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
SQLite json_object 的值参数:内容像数组,为什么最终变成了字符串 参数绑定保住了文本,却未决定结构准备接口响应时,把已有数组文本传给 json_object,结果可能是 items 字段里套着一段带方括号的字符串。原始字符都在,JSON 也合法,但下游需要的是数组,类型已经不对。这... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite progress_handler:查询怎样主动停下来,为什么回调次数不是秒数 先给长查询一个可观察的停止条件交互式工具允许用户取消查询时,不能只把界面的加载图标关掉。数据库计算本身也要收到停止信号。Python 的 SQLite 连接可以注册进度回调,运行到检查点时读取一个轻量状态;回调返回非... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
SQLite FTS5 搜索边界:短语、前缀与中文连续文字怎样变成不同的匹配 全文搜索不是把输入当成一个子串给资料库加上 MATCH 查询后,输入两个词可能命中顺序颠倒的句子,输入一段中文里的两个字却找不到。先不要急着扩大索引或调整排序:全文搜索先把内容拆成词元,再解释查询表达式,结果由这两层... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
SQLite WAL 读快照:别人已经提交,为什么我仍读到旧值且不能直接写入 同一份数据库,两个连接读到不同值一个页面读取库存后停留片刻,另一个连接把数量改为二十并提交,第一个连接再次查询却仍看到十。这在保持读事务的 WAL 模式下可能是正常快照行为。更值得注意的是,第一个连接若接着写入,不一... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite 生成列:STORED 会跟着原列更新,为什么 table_info 里还找不到它 把一行内的派生值交给数据库一个板材清单保存宽度和高度,每次修改尺寸后都要更新面积。若不同脚本各自维护第三个普通字段,某条写入路径忘了重算,就会留下互相矛盾的数据。SQLite 的生成列能把同一行内的计算关系写进表结构... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读