如何在SQL Server中的列中查找重复数字。例如11111,333333333,5555555555,7777777等

时间:2014-07-10 20:50:23

标签: sql sql-server replicate

我需要在一列中找出重复的数字(例如:1111,333333333,5555555555,777777777等)。

如何在sql server中执行此操作,而无需对每个方案进行硬编码。最大长度为10列。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:8)

这将检查列中是否包含所有相同的值。

SELECT *
FROM tablename
WHERE columnname = REPLICATE(LEFT(columnname,1),LEN(columnname))

正如Nicholas Cary指出的那样,如果列是数字,则需要先将其转换为varchar:

SELECT *
FROM tablename
WHERE CAST(columnname AS VARCHAR(10)) = REPLICATE(LEFT(CAST(columnname AS VARCHAR(10)),1),LEN(CAST(columnname AS VARCHAR(10))))

答案 1 :(得分:1)

Riffing @ Dave.Gugg的优秀答案,这是另一种方式,使用patindex()寻找与第一个不同的角色。

select *
from some_table t
where 0 = patindex( '[^' + left(t.some_column,1) + ']' , t.some_column )

同样,这仅适用于字符串类型(charvarchar等)。需要首先转换int等数字类型。