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

SQL技术问询:如何识别同一列中无对应7位等效码的12位前缀编码

如何用SQL找出无对应7位等效编码的12位编码

当然可以实现!针对你的需求,我们可以通过精准筛选+匹配验证的方式轻松搞定,下面直接给你可复用的SQL逻辑,再一步步拆解说明:

首先明确我们的目标筛选规则:

  • 目标编码必须是12位且以'00000'开头的类型
  • 去掉前5个'0'后得到的7位字符串,不存在于当前Code列中

解法1:使用NOT EXISTS(推荐,性能更优)

SELECT code
FROM your_table_name
WHERE 
  -- 筛选12位以00000开头的编码
  LENGTH(code) = 12 
  AND LEFT(code, 5) = '00000'
  -- 验证对应的7位编码不存在
  AND NOT EXISTS (
    SELECT 1
    FROM your_table_name AS t2
    WHERE t2.code = SUBSTRING(your_table_name.code, 6)
  );

解法2:使用LEFT JOIN(逻辑更直观)

如果你更习惯用表连接的思路,也可以这么写:

SELECT t1.code
FROM your_table_name AS t1
LEFT JOIN your_table_name AS t2
  ON t2.code = SUBSTRING(t1.code, 6)
WHERE 
  LENGTH(t1.code) = 12 
  AND LEFT(t1.code, 5) = '00000'
  AND t2.code IS NULL;

代码细节解释

  1. 筛选条件:LENGTH(code) = 12 AND LEFT(code, 5) = '00000' 精准锁定你要处理的12位编码类型
  2. 匹配验证:
    • SUBSTRING(code, 6) 会从第6位开始截取字符串,把000001234567转换成1234567
    • NOT EXISTS 或者LEFT JOIN ... IS NULL 都是用来判断转换后的7位编码是否在表中存在

针对你的示例数据验证

用你提供的测试数据运行以上SQL,会返回:

Code
000003456789
000004567891
000005678912

完全符合你的期望输出。

性能小贴士

因为你的表有几百万条数据,建议给code列添加索引,这样匹配查询时能避免全表扫描,大幅提升执行速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:57:48