SQL Server 2008 Express:在 table 中查找相似记录

SQL Server 2008 Express : find similar records in a table

这是我关于 SQL Server 2008 Express 数据库的第一个问题,包含文章、数量、价格等。不幸的是,当我第一次加载数据时出现以下错误:

我为(几乎)每篇非常相似但性质不同的文章创建了两条记录。

这是一个例子:

唯一不同的字符是 ,.。有没有办法将所有这些文章 SELECT 改为 DELETE 带逗号的文章并留下其他文章?

请注意,不同字符的位置不固定,可能在右数第3个,也可能在中间

delete from my_table
where my_column like '%,%';

您可以使用自联接来完成:

delete T2
from TableName T1 JOIN
     TableName T2 on Replace(T1.article,'.','')=Replace(T2.article,',','')
where T2.article like '%,%'

演示在 SQL Fiddle

您可以通过将 delete T2 替换为 select T2.*

来检查哪些记录将被删除

首先搜索那些有重复值的记录,然后删除它们。

select B.*
--delete B 
from
(select [column], replace(replace([column], ',', ''), '.', '') from [yourtable]
group by [column] having count(1) > 1)A
JOIN [yourtable] B
ON A.[column] = B.[column] and A.[column] like '%,%'

replace(replace([column], ',', ''), '.', '') 将获取没有 ,. 的记录,而 count(1) > 1 将获取重复的记录。