Sql server SQL移动电话号码
我的表位于SQL server 2008中,其中一个字段是Mobile Phone。我是否可以在sql中使用Where语句,该语句只返回经过验证的手机号码,例如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”
+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做了同样的事,但似乎没有收到吗?