Как написать запрос, используя LIKE, чтобы принимать специальные символы также?

0

Имею одно значение в базе данных как "123-456-789". Мой запрос

SELECT * FROM table_name WHERE phone LIKE "% 123456789%"

Но это не дает результата. Любая идея

  • 0
    Вы можете использовать регулярные выражения
  • 0
    @SougataBose Может быть, вы хотите привести его к дополнительной информации о RegEx, так как RegEx - своего рода продвинутый материал. Рассмотрите ваши предложения как полный письменный ответ. Я тоже был бы благодарен.
Показать ещё 3 комментария
Теги:
sql-like

3 ответа

1
Лучший ответ

Конечно, вы исключили тире, чтобы он не соответствовал средней части. Логика вашего запроса - "ничего до моей строки и ничего после", но средняя часть должна быть одинаковой.

SELECT * FROM table_name WHERE phone LIKE "%123-456-789%"  

Это сработает.

Но если вы хотите исключить тире, вы можете сделать что-то вроде:

SELECT * FROM table_name WHERE REPLACE(phone ,'-','') = "123456789"  

Если ваш ввод включает также тире, вы также можете удалить их:

SELECT * FROM table_name WHERE REPLACE(phone ,'-','') = REPLACE('123456789','-','')

Таким образом, вы можете искать число с тире или без, но тире никогда не будут рассмотрены.

  • 0
    Иногда я проверяю и эти штрихи. Если я проверяю с тире или нет, результат должен прийти, если эти цифры есть @ pr1nc3
  • 0
    Отредактировал мой ответ
Показать ещё 2 комментария
0

Пытаться

SELECT * FROM table_name WHERE 'phone' LIKE '%[0-9]' '_' '[0-9]' '_' [0-9]%'

Вы также можете рассмотреть некоторые операторы OR

SELECT * FROM table_name WHERE 'phone' LIKE '%[0-9]' '_' '[0-9]' '_' [0-9]%' OR '%[0-9]%'
0

Вы можете попробовать использовать regex непосредственно в mySQL следующим образом:

select * from 'table_name' where 'phone' regexp '[0-9]{3}-[0-9]{3}-[0-9]{3}';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню