Intereting Posts

PHP MYSQL ищет почтовый индекс, используя LIKE

У меня есть запрос, который ищет почтовый индекс, используя 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. Зависит от того, что вы хотите сделать.