如何查找具有前导零的记录及其在数据库中删除了前导零的对应部分(重复)记录并将其组合在一起



我有一个数据库,它正确格式化了带有前导零的记录。但是,除了去除前导零(感谢 excel(之外,相同的记录也被添加到数据库中。实质上是创建遵循错误编号约定的重复记录。因此,数据库具有具有正确ID的记录,例如...

01234,
01122,
01323,

但也带有不正确的 ID 号,例如

1234,
1122,
1323,

我正在尝试执行一个查询,该查询将返回一个结果集,该结果集将这些重复记录分组在数据库中,如下所示:

01234,
1234,
01122,
1122,
01323,
1323,

任何想法都非常感谢。

我使用CROSS APPLY来重新查询表。

CROSS APPLY中的查询查找"匹配项",如果它们都作为整数CAST,但作为字符串值不相等,则它们的值将相等。然后,为了稍微清理结果集,我将其限制在基值不以零字符开头的位置。否则,查询会在两个方向上拉取匹配项,这似乎没有用。

数据设置:

DECLARE @t TABLE
  (
    idCol VARCHAR(10) NOT NULL
  );
INSERT @t
  (
    idCol
  )
VALUES
  ('01234')
 ,('01122')
 ,('01321')
 ,('1234')
 ,('1122')
 ,('1321')
 ,('00012');

查询:

SELECT
  t.idCol
 ,c.idCol
FROM
  @t AS t
CROSS APPLY
  (
    SELECT
      idCol
    FROM
      @t
    WHERE
      idCol = CAST(t.idCol AS INT)
      AND idCol <> t.idCol
      AND LEFT(idCol, 1) <> '0'
  ) AS c;

结果:

+-------+-------+
| idCol | idCol |
+-------+-------+
| 01234 |  1234 |
| 01122 |  1122 |
| 01321 |  1321 |
+-------+-------+

最新更新