2013-04-25 2 views
0

У меня есть запрос, который ищет почтовый индекс с использованием LIKE. Теперь почтовый индекс прекрасен, если кто-то ставит полный почтовый индекс, например. SW14 4NP. Но если кто-то должен был включить SW1, он вернет что-либо с результатами SW1 +. Как я могу сделать так, что если кто-то положил SW1, он будет отображать только SW1 почтовый индекс, а не SW11, SW14 и т.д.PHP MYSQL поиск почтового индекса с использованием LIKE

Мой запрос:

SELECT postcode FROM data WHERE postcode LIKE '$search%' 

базы данных для почтовых индексов сохраняются как SW14 4NP и т.д. с пространством.

+0

Просьба представить данные Пример таблицы – Omesh

+0

Спасибо за ответы, ответ eggyal был лучше подходит, как она обладает большей гибкостью. Я забыл упомянуть, что у меня есть функции, которые проверяют, является ли это полным почтовым индексом или внешним почтовым индексом. Я просто не мог заставить запрос показывать результаты только на внешнем почтовом индексе. Спасибо всем за ответы, так как все они отлично работают. – Sygon

ответ

2

Использование regular expression на основе сопоставления с образцом:

WHERE postcode RLIKE '^$search(?[0-9][A-Z]{2})?' 
3
SELECT postcode FROM data WHERE postcode LIKE '$search %' 

, просто добавив пробел после ключа поиска. то он найдет все коды SW1 (или что вы ищете), но не SW11

+0

Предполагая, что данные хранятся с правильно размещенными пробелами. – eggyal

+3

Это не будет работать, если указан полный почтовый индекс. – Nerdwood

0
SELECT postcode FROM data WHERE postcode LIKE '$search %' 

Но говорит, что пользователь вставляет только SW, это не вернет ничего, а с текущим запросом он будет возвращать ничего начиная с SW. Зависит от того, что вы хотите сделать.