Имею одно значение в базе данных как "123-456-789". Мой запрос
SELECT * FROM table_name WHERE phone LIKE "% 123456789%"
Но это не дает результата. Любая идея
Конечно, вы исключили тире, чтобы он не соответствовал средней части. Логика вашего запроса - "ничего до моей строки и ничего после", но средняя часть должна быть одинаковой.
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','-','')
Таким образом, вы можете искать число с тире или без, но тире никогда не будут рассмотрены.
Пытаться
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]%'
Вы можете попробовать использовать regex
непосредственно в mySQL следующим образом:
select * from 'table_name' where 'phone' regexp '[0-9]{3}-[0-9]{3}-[0-9]{3}';