Найдите все строки, содержащие почтовый индекс Лондона, используя запрос SQL - PullRequest
0 голосов
/ 09 июля 2020

Есть ли способ найти все заказы, отправленные в Лондон, с помощью запроса SQL? Простой поиск Лондона в столбцах не работает, так как некоторые клиенты указали название района, а не «Лондон».

Так что я подумал, что лучше всего найти go по почтовому индексу. Будет ли это лучший способ go нахождения строк? И продолжить использование операторов OR для каждого почтового индекса?

select * from tt_order_data 
where ship_postcode like "e1%"

Согласно вики, это диапазон почтовых индексов:

E, E C, N, NW, SE, SW, W и W C области почтовых индексов (восемь почтовых округов Лондона) составляли внутреннюю часть почтового региона Лондона и соответствуют лондонскому почтовому городу.

BR, CR, DA, EN , HA, IG, SL, TN, KT, RM, SM, TW, UB, WD и CM (14 внешних почтовых индексов Лондона) составляли внешнюю часть почтового региона Лондона. [20]

внутренние и внешние области вместе составляли почтовый регион Лондона. [13]

1 Ответ

1 голос
/ 09 июля 2020

Один из способов сделать это - использовать REGEXP и определить шаблон, который соответствует только ship_postcode, которые начинаются с одной из вышеупомянутых последовательностей символов почтового индекса Лондона:

SELECT *
FROM tt_order_data
WHERE UPPER(TRIM(ship_postcode)) REGEXP '^(E|EC|N|NW|SE|SW|W|WC|BR|CR|DA|EN|HA|IG|SL|TN|KT|RM|SM|TW|UB|WD|CM)'

DB Fiddle | Regex101

Важно помнить, что вам все равно потребуется выполнить очистку некоторого объема данных, если входные данные не контролировались должным образом, поскольку этому фильтру будут соответствовать недопустимые почтовые индексы. (например, E1 7AA допустимо, но этот фильтр также будет рассматривать строку типа ERGO также действительной).

Кстати, я не совсем уверен, как это будет работать с вашими спецификациями c набор данных в масштабе, но если это для разового упражнения, то он должен идеально соответствовать вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...