我有一个MSSQL数据库,并且此列具有ID。 有些{}包裹在ID周围,有些则没有。
我需要找出是否存在重复的条目,例如: 一栏中显示“ {abcd}”和“ abcd”。
显然我不知道'abcd'...
是否有一种简单的方法来连接同一列并搜索“ LIKE”重复项?内部加入对我不起作用...
答案 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中可用