如何在表中找到重复的名字时,姓和名可以在一个不同的顺序?

  • 本文关键字:顺序 一个 sql sql-server tsql
  • 更新时间 :
  • 英文 :


我正试图从表中找到重复的名称。目前我有这个查询,它确实找到了一些重复的名字。

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

相关内容

  • 没有找到相关文章

最新更新