我正在查看手机号码数据库,并试图查找错误。
例如,手机号码以' 04'开头,所以为了测试错误,我可以查询:
SELECT DISTINCT Names.Phone_M FROM Names
WHERE Names.Phone_M NOT LIKE '04%'
在测试错误时,我注意到一些数据包含文本。有没有一种过滤数据的方法,所以它只提供条目而不是包含某种文本和数字?即如果一个条目是' 0400000000 - John',我可以编写一个查询,在没有简单的试错的情况下进行选择吗?
由于
答案 0 :(得分:3)
您可以使用PATINDEX
检查手机中是否包含数字以外的字符。
[^0-9]
找到0,1,2,3,4,5,6,7,8,9以外的任何字符。
SELECT DISTINCT Phone_M
FROM Names
WHERE PATINDEX('%[^0-9]%',Phone_M) > 0
AND Phone_M LIKE '04%'
概括上述内容以找到所有可以包含数字和文字的手机,请使用
SELECT DISTINCT Phone_M
FROM Names
WHERE PATINDEX('%[^0-9]%',Phone_M) > 0
AND PATINDEX('%[0-9]%',Phone_M) > 0
答案 1 :(得分:2)
您可以尝试ISNUMERIC()函数
where ISNUMERIC (Names.Phone_M) = 1 -- should match valid numbers
where ISNUMERIC (Names.Phone_M) = 0 -- should match invalid numbers