Как написать SQL запрос с помощью регулярного выражения для поиска строк содержащих перед символом @ 4 цифры?

Рейтинг: 1Ответов: 1Опубликовано: 15.02.2023

я использую MSSQL и пытаюсь найти все строки в которых есть 4 цифры перед символом @ в MSSQl Мой запрос выглядит следующим образом

SELECT * FROM Contact WHERE Email LIKE '%\d{4}@%' ESCAPE '\'

Он отлично отрабатывает в конструкторах regexp и в коде Js, но в SQL он не отдает ничего Вот строка , которую я пытаюсь найти a.bakerd1234@ac.com Да можно воспользоваться SELECT * FROM Contact WHERE Email LIKE '%[0-9][0-9][0-9][0-9]@%' ESCAPE '\' но это я бы хотел понять, как исправить мое регулярное выражение

Ответы

▲ 1

Проверил на MS SQL, так работает

SELECT * FROM 
(   
    SELECT * FROM 
    (
        VALUES
            (1, 'email.asd@ya.ru'),
            (2, 'something1234@new.ru'),
            (3, '@ya.ru'),
            (4, 'asdasd'),
            (5, '_asdasdasd@mail.ru'),
            (6, 'asd_asdas@mail.ru'),
            (7, '.asdasd@mail.ru'),
            (8, '007asd@email.com'),
            (9, 'a.bakerd1234@ac.com'),
            (10, 'a.bakerd1234ac.com')
    ) AS emails(id, email)
) SQ
WHERE SQ.email LIKE ('%[0-9][0-9][0-9][0-9]%@%')