我正试图从表中找到重复的名称。目前我有这个查询,它确实找到了一些重复的名字。
select DisplayName, count(DisplayName)
from table_name
group by DisplayName
having count(DisplayName) > 1
这将提供完全相同的显示名称。例如,如果有两个"理查德,迈克尔;显示名称,然后它们将显示在输出中。但是,如果有第三个显示名称是& Michael, richard &;那么它将不会显示当前的查询。
这是自由式文本没有正确规范化的问题。这里需要更多的逻辑,但是获取delimitedsplit8k的副本,你可以这样做:
DECLARE @names TABLE (SomeName VARCHAR(100));
INSERT @names
VALUES('Richard, Michael'),('Sam Jones'),('Michael Richard'),('Bill Smith'),('Bill Smith');
SELECT
DisplayName = f.Nm,
Total = COUNT(f.Nm)
FROM @names AS n
CROSS APPLY
(
SELECT LTRIM(x.item+' ')
FROM dbo.delimitedSplit8K(n.SomeName,',') AS x
ORDER BY x.itemNumber DESC
FOR XML PATH('')
) AS f(Nm)
GROUP BY f.Nm
HAVING COUNT(*) > 1;
的回报:
DisplayName Total
---------------------------- -----------
Bill Smith 2
Michael Richard 2