Необходимо преобразовать шаблон проверки регулярных выражений, используемый для проверки телефонных номеров, в запрос SELECT в SQL для проверки списка телефонных номеров в таблице SQL
Regex = ^\s*1?[ \-\(\.\/]*[2-9]\d{2}[ \-\.\(\)\/]*[2-9]\d{2}[ \-\.\(\)\/]*\d{4}\s*$|^\s*011[ \-]*[2-9][ \-\(\.\/\)\,\d]
Я попытался использовать функцию PATINDEX для передачиВыше выражение. Ниже мой запрос
DROP TABLE #PhoneNumberList
SELECT * INTO #PhoneNumberList
FROM (
SELECT '8049901000' AS PhoneNumber, 'Valid' as ValidationResultNeeded
UNION
SELECT '800-200-1000', 'Valid'
UNION
SELECT '1000900000' , 'Invalid'
UNION
SELECT '4053366463' , 'Valid'
UNION
SELECT '(405)334-5665' , 'Valid'
UNION
SELECT '405334(6463)' , 'Invalid'
union
SELECT '7341234321' , 'Invalid'
UNION
SELECT '3961573999' , 'Invalid'
UNION
SELECT '40533406463' , 'Invalid'
)A
SELECT * , Patindex('^\s*1?[ \-\(\.\/]*[2-9]\d{2}[ \-\.\(\)\/]*[2-9]\d{2}[ \-\.\(\)\/]*\d{4}\s*$|^\s*011[ \-]*[2-9][ \-\(\.\/\)\,\d]+$',PhoneNumber) AS RegExValidation
FROM #PhoneNumberList
order by 2
Я получаю нулевое значение для всех телефонных номеров. Я ожидал получить значение, отличное от 0, для недействительных телефонных номеров. Правильно ли я использую эту функцию, чтобы получить правильную проверку? Или есть другой способ написать этот SQL-запрос?