У меня есть запрос, который ищет почтовый индекс, используя LIKE. Теперь почтовый индекс хорош, если кто-то помещает полный почтовый индекс, например SW14 4NP. Но если кто-то должен был включить SW1, он вернет что-либо с результатами SW1 +. Как я могу сделать так, чтобы, если кто-то поставил SW1, он отобразил бы только почтовый индекс SW1, а не SW11, SW14 и т. Д.
Мой запрос:
SELECT postcode FROM data WHERE postcode LIKE '$search%'
База данных для почтовых индексов хранится как SW14 4NP и т. Д. С пробелом.
Используйте сопоставление шаблонов на основе регулярных выражений :
WHERE postcode RLIKE '^$search( ?[0-9][AZ]{2})?'
SELECT postcode FROM data WHERE postcode LIKE '$search %'
просто добавив пробел после ключа поиска. то он найдет все коды SW1 (или все, что вы ищете), но не SW11
SELECT postcode FROM data WHERE postcode LIKE 'SW1 %'
SELECT postcode FROM data WHERE postcode LIKE '$search %'
Но скажите, что пользователь вставляет только SW, он ничего не вернет, в то время как с вашим текущим запросом он вернет все, начиная с SW. Зависит от того, что вы хотите сделать.