我在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]?
答案 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]'