我需要在列中標識重複的數字(例如:1111,33333333,5555555555,777777777等)。如何在SQL服務器的列中查找重複數字。例如11111,333333333,5555555555,7777777等
如何在sql server中做到這一點,而不必硬編碼每個場景。列的最大長度爲10。任何幫助表示讚賞。
我需要在列中標識重複的數字(例如:1111,33333333,5555555555,777777777等)。如何在SQL服務器的列中查找重複數字。例如11111,333333333,5555555555,7777777等
如何在sql server中做到這一點,而不必硬編碼每個場景。列的最大長度爲10。任何幫助表示讚賞。
Riffing上@ Dave.Gugg的出色答卷,還有一種方法,使用patindex()
到尋找與第一個不同的角色。
select *
from some_table t
where 0 = patindex('[^' + left(t.some_column,1) + ']' , t.some_column)
同樣,這僅適用於字符串類型(char
,varchar
等)。數字類型如int
需要先轉換。
感謝您的意見。 – user2675491
這將檢查列是否具有所有相同的值。
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))))
優秀的答案 –
@Dave。 Gugg:這適用於字符串類型,但不適用於整數。你必須首先將'int'列轉換爲'varchar'。但是它與你在SQL中獲得的一樣好。 –
@NicholasCarey幾個演員應該能夠照顧它。 – Darek
這可以爲您的問題提供解決方案:http://dba.stackexchange.com/questions/49522/how-to-find-column-with-all-same-repeating-character – Max