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

如何用SQL对同一列内的相似数据进行归类查询

SQL实现带前导零同类账号配对方案

核心思路

利用「字符串转数值会自动忽略前导零」的特性,将同数值的账号归为同类,通过自连接筛选出带前导零和不带前导零的配对组合,过滤无配对的唯一值。

通用SQL语句

假设你的表名为account_table,参考写法如下:

SELECT 
  t1.account AS account1,
  t2.account AS account2
FROM account_table t1
INNER JOIN account_table t2
  ON CAST(t1.account AS UNSIGNED) = CAST(t2.account AS UNSIGNED)
  AND t1.account LIKE '0%'
  AND t2.account NOT LIKE '0%';

逻辑说明

  • 自连接关联同数值的账号:通过CAST将字符串格式的account转为无符号整数,自动抹除前导零匹配同类值
  • 固定配对规则:通过LIKE条件限定account1为带前导零的账号,account2为不带前导零的账号,避免出现反向重复的配对结果
  • 自动过滤唯一值:INNER JOIN会自动排除没有匹配项的唯一值(如示例中的456),无需额外写过滤条件

不同数据库适配调整

如果使用非MySQL数据库,仅需调整数值转换的函数即可:

  • PostgreSQL:替换为CAST(t1.account AS INTEGER)
  • Oracle:替换为TO_NUMBER(t1.account)
  • SQL Server:替换为CAST(t1.account AS INT)

输出示例

针对你给出的测试数据,执行后输出结果如下:

account1account2
01111
02323

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:27:03