在MSSQL中查找“喜欢”重复项

时间:2018-11-22 13:24:59

标签: sql sql-server

我有一个MSSQL数据库,并且此列具有ID。 有些{}包裹在ID周围,有些则没有。

我需要找出是否存在重复的条目,例如: 一栏中显示“ {abcd}”和“ abcd”。

显然我不知道'abcd'...

是否有一种简单的方法来连接同一列并搜索“ LIKE”重复项?内部加入对我不起作用...

2 个答案:

答案 0 :(得分:4)

您可以执行以下操作:

SELECT Id
FROM TableName AS T0
WHERE EXISTS
(
    SELECT 1
    FROM TableName AS T1
    WHERE T0.Id = '{' + T1.Id + '}'
    -- Uncomment the next row if you want all duplicates (with or without brackets):
    -- OR '{' + T0.Id + '}' = T1.Id
)

这将返回所有记录,其中id用大括号括起来,并且具有重复的id,只是没有括号。

答案 1 :(得分:0)

您也可以喜欢

CREATE TABLE T(
  ID VARCHAR(25)
);

INSERT INTO T VALUES
('abc'),
('{abc}'),
('def'),
('ghi'),
('{ghi}');


SELECT *
FROM
(
  SELECT TRIM(TRANSLATE(ID, '{}', '  ')) ID
  FROM T
) TT
GROUP BY ID
HAVING COUNT(ID) > 1;

-- Or you can also do

SELECT *
FROM
(
  SELECT REPLACE(REPLACE(ID, '{', ''), '}', '') ID
  FROM T
) TT
GROUP BY ID
HAVING COUNT(ID) > 1;

请注意, TRANSLATE() TRIM() 功能仅在SQL Server 2017中可用