SQL Server 2008 Express:在表

时间:2015-07-30 09:01:56

标签: sql sql-server-2008-express

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

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

以下是一个例子:

  • TUTO510088.9X3
  • TUTO510088,9X3

唯一不同的角色是,.。有没有办法SELECT所有这些文章到DELETE逗号并留下其他文章?

请注意,不同角色的位置不固定,可能是从右边或中间的第3个

3 个答案:

答案 0 :(得分:1)

您可以使用自我加入:

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.*来查看要删除的记录

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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将获得重复的记录。