Подтвердить что ты не робот

Как игнорировать символы в MYSQL SELECT LIKE%...%

У меня есть таблица с столбцом phone, где данные могут иметь пробелы, точки, тире или знаки + между номерами. Мне нужно выполнить поиск с помощью подстановочных знаков LIKE, которые игнорируют все эти символы, например:

  • запись может иметь телефон как "+ 123-456 78.90"
  • запрос, ищущий "6789" или любую полную или неполную последовательность правильных цифр в порядке, должен поднять эту запись.

К сожалению, я не могу очистить исходную таблицу, чтобы удалить незнатные символы и сделать простой SELECT LIKE%...%.

MYSQL имеет функции для замены/удаления символов из строк, но не может найти способ использовать их внутри запроса с помощью скрытого LIKE.

Любая помощь будет очень оценена.

4b9b3361

Ответ 1

Я вижу два способа сделать это:

  • Если вы разрешаете только несколько дополнительных символов, чем вы можете подготовить строку, которая удаляется из этих дополнительных символов, и вы используете оператор LIKE, вы обычно

    select * from phoneTable where replace(replace(phone, '+', ''), '-', '') LIKE '%123%'
    

    Конечно, вам нужно столько заменять вызовы, сколько допустимых дополнительных символов

  • Вы используете регулярные выражения, скажем, вы ищете шаблон 123

    select * from phoneTable where phone REGEXP '.*1[^0-9]*2[^0-9]*3'
    

Ответ 2

У меня была такая же проблема с partnumbers и нежелательными символами. Мое решение было

SELECT * FROM parts WHERE replace(partnumber, '-', '') LIKE '$searchterm%';