You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正SQL查询筛选表名后缀数字小于16284961并排除回收站表

问题原因

  • 原有正则[0-9]+会匹配表名任意位置的连续数字,Oracle回收站表命名格式为BIN$xxx==$0,名称中包含数字,因此会被误判纳入结果
  • 原有正则没有校验「数字必须位于表名末尾、且前面紧跟下划线」的规则,匹配逻辑不严谨

修正后的查询语句

SELECT segment_name, bytes/1024/1024 AS "SIZE in MB" 
FROM user_segments 
WHERE segment_type='TABLE' 
  -- 校验表名规则:末尾为下划线加连续数字
  AND REGEXP_LIKE(segment_name, '_[0-9]+$')
  -- 仅提取表名末尾的数字做大小判断
  AND TO_NUMBER(REGEXP_SUBSTR(segment_name, '[0-9]+$')) < 16284961;

如果需要更保险,可主动添加条件排除回收站表:

SELECT segment_name, bytes/1024/1024 AS "SIZE in MB" 
FROM user_segments 
WHERE segment_type='TABLE' 
  AND REGEXP_LIKE(segment_name, '_[0-9]+$')
  AND TO_NUMBER(REGEXP_SUBSTR(segment_name, '[0-9]+$')) < 16284961
  -- 直接过滤Oracle回收站生成的临时表
  AND segment_name NOT LIKE 'BIN$%';

逻辑说明

  • REGEXP_LIKE(segment_name, '_[0-9]+$') 严格匹配你要求的表名规则,确保数字部分一定在表名末尾且前缀为下划线
  • REGEXP_SUBSTR(segment_name, '[0-9]+$') 仅提取表名末尾的连续数字,避免匹配到表名中间的数字导致判断错误
  • 可选的NOT LIKE 'BIN$%' 直接过滤回收站临时表,进一步降低误判概率

内容的提问来源于stack exchange,提问作者Aarie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:06:01