使用 REPLICATE 查找数字,例如 111111,0000,4444

use*_*183 5 sql-server

我一直试图在我的表中找到重复的数字,例如 1111、22222、55555。经过一番研究,我发现据说这是有效的:

SELECT *
FROM tablename
WHERE columnname = REPLICATE(LEFT(columnname,1),LEN(columnname))
Run Code Online (Sandbox Code Playgroud)

它确实有效,但我想了解它为什么有效。如果有人明白这是在做什么,请赐教。

Dav*_*itz 5

列名 = 复制(左(列名,1),LEN(列名))

例如

columnname = '111111' 
=>  
LEFT(columnname,1) = '1'
LEN(columnname)    = 6

REPLICATE(LEFT(columnname,1),LEN(columnname)) = 
REPLICATE(        '1'       ,       6       ) = 
'111111'
Run Code Online (Sandbox Code Playgroud)

取列最左边的字符并将其复制到列的长度。
如果结果等于该列,则您知道该列的所有字符都与最左边的字符相同。