2016-11-28 57 views
2

我正在查看移动号码的数据库,并且正在尝试查找错误。SQL - 您可以按数据类型过滤吗?

例如,移动电话号码以“04”开头,所以测试是否有错误,我可以查询:

SELECT DISTINCT Names.Phone_M FROM Names 
WHERE Names.Phone_M NOT LIKE '04%' 

在测试中的错误,我注意到一些数据包含文本。有没有一种过滤数据的方法,使其只能输入包含某些文本和数字的条目?即如果一个条目是'0400000000 - John',我可以写一个查询,它会在没有简单的试验和错误的情况下选择它吗?

感谢

回答

1

您可以尝试ISNUMERIC()函数

where ISNUMERIC (Names.Phone_M) = 1 -- should match valid numbers

where ISNUMERIC (Names.Phone_M) = 0 -- should match invalid numbers

+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 
相关问题