Sql server SQL移动电话号码

Sql server SQL移动电话号码,sql-server,validation,mobile,Sql Server,Validation,Mobile,我的表位于SQL server 2008中,其中一个字段是Mobile Phone。我是否可以在sql中使用Where语句,该语句只返回经过验证的手机号码,例如 +44123456789, 0044123456789, 123456789 123-456789 等等。 我可以使用这个“^((((\d{3}))|(\d{3}-)\d{3}-\d{4})|(+?\d{2}(((-)\d{1,8}{1,5})){0,1}$” 但是如何排除数字中的方括号()选择 此外,如果我希望数字的开头以“087”

我的表位于SQL server 2008中,其中一个字段是Mobile Phone。我是否可以在sql中使用Where语句,该语句只返回经过验证的手机号码,例如

+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]

这里有一个可能的解决方案,只使用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]'

您可以在SQL Server中使用正则表达式。模式,如果您不介意的话,如何在T-SQL中使用正则表达式?您能澄清这个问题并添加更多的数据吗?我可以使用这个“^(((((((\d{3}))|(\d{3}-)\d{3}-\d{4})|(+?\d{2}(((-)\d{1,8}{1,5})){0,1}$”,但是我如何排除您不能在tsql中直接使用正则表达式的数字中的括号()选择。您必须使用CLR函数从.Net Framework访问正则表达式,或者使用扩展存储过程。感谢您的DMason Quick qt,如果我希望数字的开头以“087”开头,我是否只需输入[0][8][7]而不是[0-9]?您只需使用“087”即可。例如,它不是像“[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]”那样的
pn.PhoneNumber,而是像“087-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]”
谢谢,但我试着对003538%和LEN 14(Customer.MobilePhone)=14做了同样的事,但似乎没有收到吗?