我需要在列中识别重复的数字(例如:1111、33333333、5555555555、777777777 等)。
我怎样才能在 sql server 中做到这一点,而不必对每个场景都进行硬编码。最大长度为 10 列。任何帮助表示赞赏。
我需要在列中识别重复的数字(例如:1111、33333333、5555555555、777777777 等)。
我怎样才能在 sql server 中做到这一点,而不必对每个场景都进行硬编码。最大长度为 10 列。任何帮助表示赞赏。
这将检查列中是否具有所有相同的值。
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))))
引用@Dave.Gugg 的出色答案,这是另一种方式,patindex()
用于寻找与第一个不同的角色。
select *
from some_table t
where 0 = patindex( '[^' + left(t.some_column,1) + ']' , t.some_column )
同样,这仅适用于字符串类型(char
,varchar
等)。数字类型如int
will 需要首先转换。