2

我需要在列中识别重复的数字(例如:1111、33333333、5555555555、777777777 等)。

我怎样才能在 sql server 中做到这一点,而不必对每个场景都进行硬编码。最大长度为 10 列。任何帮助表示赞赏。

4

2 回答 2

9

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

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))))
于 2014-07-10T20:59:40.113 回答
1

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

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

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

于 2014-07-10T21:11:24.397 回答