SQL手机号码验证

时间:2014-03-07 13:55:55

标签: sql-server validation mobile

我在SQL server 2008中有我的表,其中一个字段是Mobile Phone。是否有一个Where语句我可以在sql中使用,它只返回Validated Mobile数字,如;

+44123456789,
0044123456789,
123456789
123-456789

等。 我可以使用这个'^((((((\ d {3}))|(\ d {3} - ))\ d {3} - \ d {4})|(+?\ d {2}( ( - |)\ d {1,8}){1,5})){0,1} $'

但如何排除数字

中的方括号()选择

如果我希望数字的开头以'087'开头,我只需要输入[0] [8] [7]而不是[0-9]?

1 个答案:

答案 0 :(得分:1)

这是一个可能的解决方案,仅使用tsql。

CREATE TABLE #PhoneNumbers (
    ID INT IDENTITY,
    PhoneNumber VARCHAR(32)
)

INSERT INTO #PhoneNumbers (PhoneNumber)
VALUES 
    ('+44123456789'),
    ('0044123456789'),
    ('123456789'),
    ('123-456789'),

    --Invalid numbers for testing.
    ('12-3456789'),
    ('123456789+'),
    ('123abc789')

SELECT *
FROM #PhoneNumbers pn

--Where clause filters, based on the four scenarios provided.
WHERE pn.PhoneNumber LIKE '+[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
OR pn.PhoneNumber LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
OR pn.PhoneNumber LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
OR pn.PhoneNumber LIKE '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]'