T-SQL查询以识别由单个重复字符/数字组成的varchar字段?

Ger*_*vis 5 sql t-sql sql-server-2005

我需要清理存储为varchar的电话号码.存在不良数据,其中未知电话号码被存储为单个数字的序列.最终会更复杂(区号和前缀匹配),但我想简单查询明显不好的记录.

例如:

有效电话号码:3289903829

电话号码无效:1111111111

现在,如果伪造的产品ID是合适的长度(10位数),则很容易解析和清理.

    SELECT phone
    FROM customers 
    SET phone = NULL 
    WHERE phone IN ('0000000000','9999999999',''8888888888','7777777777','6666666666','5555555555','4444444444','3333333333','2222222222','1111111111') 
Run Code Online (Sandbox Code Playgroud)

然而,有时假电话是任意长度的(可能是由于拼写错误)所以11个或9个,或n个.
如何识别包含所有相同字符/数字的字符串?

1111111 - match
4444 - match
1112 - no match
4445555 - no match 
Run Code Online (Sandbox Code Playgroud)

Jef*_*ata 10

您可以获取第一个字符并复制它:

where phone = replicate(left(phone,1), len(phone))
    and phone is not null
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用`left(phone,1)`而不是`substring(phone,1,1)`. (3认同)