如何仅通过首尾记录查询Oracle批量生成的记录总条数
日志表批次总数查询实现方案
你可以直接复用原有生成序列时的数字提取逻辑,在查询日志表时直接计算每个批次的生成总数,最终SQL如下:
SELECT FIRST_SEALS, LAST_SEALS, "DATE", TO_NUMBER(REGEXP_SUBSTR(LAST_SEALS, '\d+$')) - TO_NUMBER(REGEXP_SUBSTR(FIRST_SEALS, '\d+$')) + 1 AS BATCH_COUNT FROM SEC_TRANSFER_SEALS;
注意事项
DATE是Oracle保留关键字,作为字段名使用时必须用双引号包裹,建议后续将字段修改为OPERATE_DATE等非关键字命名,避免后续SQL执行报错。- 该计算逻辑和你原有生成序列的计数规则完全一致,只要首尾编号遵循「相同前缀+末尾连续数字」的规则,计算出的总数和实际生成的序列数量完全匹配。
REGEXP_SUBSTR(xxx, '\d+$')会自动匹配字符串末尾的所有数字,不受前缀长度(比如单字母、双字母前缀)影响,兼容性更强。
内容的提问来源于stack exchange,提问作者Andrii Havrylyak
相关产品推荐
相关产品推荐

