我需要在一列中找出重复的数字(例如:1111,333333333,5555555555,777777777等)。
如何在sql server中执行此操作,而无需对每个方案进行硬编码。最大长度为10列。任何帮助表示赞赏。
答案 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 )
同样,这仅适用于字符串类型(char
,varchar
等)。需要首先转换int
等数字类型。