2014-07-10 62 views
1

我需要在列中標識重複的數字(例如:1111,33333333,5555555555,777777777等)。如何在SQL服務器的列中查找重複數字。例如11111,333333333,5555555555,7777777等

如何在sql server中做到這一點,而不必硬編碼每個場景。列的最大長度爲10。任何幫助表示讚賞。

+2

這可以爲您的問題提供解決方案:http://dba.stackexchange.com/questions/49522/how-to-find-column-with-all-same-repeating-character – Max

回答

1

Riffing上@ Dave.Gugg的出色答卷,還有一種方法,使用patindex()到尋找與第一個不同的角色。

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

同樣,這僅適用於字符串類型(charvarchar等)。數字類型如int需要先轉換。

+0

感謝您的意見。 – user2675491

7

這將檢查列是否具有所有相同的值。

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

正如尼古拉斯·卡里指出,如果列數你需要轉換爲varchar第一:

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

優秀的答案 –

+0

@Dave。 Gugg:這適用於字符串類型,但不適用於整數。你必須首先將'int'列轉換爲'varchar'。但是它與你在SQL中獲得的一樣好。 –

+0

@NicholasCarey幾個演員應該能夠照顧它。 – Darek

相關問題