只获取字母前后的数字

问我

我很少有这样的电话号码:

            Tele
            -----
            251510X25    
            364680X5 
            12345,X34
            12345X
            x57823889
            1234567X12/7
            1234567X,12/7

我想让电话只在 X 之前和之后有数字我的输出应该是:

            Tele
            -----
            251510X25    
            364680X5 
            1234567X12/7

我写了一个这样的查询:

            SELECT ID,TELP,
                 CASE 
                     WHEN PATINDEX('%[0-9]%', TELP) >0  THEN 
                         RTRIM(LEFT(TELP, PATINDEX('%[0-9]%', TELP)-1)) 
                     ELSE TELP 
                 END as TELP1
             FROM [teble1] where len(TELP) <=10 and PATINDEX('%[0-9]%', TELP) >0 
             and (TELP like '%x%' or TELP like '%/%')

我无法获得所需的输出。我有大约 10 万条这样的记录。

蒂姆·比格莱森

LIKE运营商可以在这里工作:

SELECT *
FROM [teble1]
WHERE
    TELP LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9]X[0-9]%';

上面的类似模式表示捕获任何具有七位数字的数字,后跟一个X,然后是至少一位数字。

SQL Server 没有非常强大的正则表达式支持,但为了弥补这一点,它们增强LIKE了支持一些基本的正则表达式模式匹配,例如[0-9]表示任何数字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章