Mysql Поиск почтовых индексов

Я хочу создать поисковый запрос MySQL, который будет искать почтовые индексы, вот что я сделал до сих пор

SELECT * FROM orders where ( InvoicePostcode LIKE 'b%' OR InvoicePostcode LIKE 'ws%') order by InvoiceNumber asc

Я хочу отображать только почтовый индекс, начинающийся с b или ws, но проблема в том, что некоторые сообщения содержат bb или BS в начале почтового индекса, например

BS24 8EE

BB9 8SY

единственные, которые должны показывать, что начинаются с b, как этот, B65 0NQ, я не уверен, как проверить почтовый индекс, только посмотрев на букву в начале перед цифрами в почтовом индексе.

-1

Решение

Вы можете попытаться использовать регулярное выражение, чтобы исключить определенный шаблон:

Ниже я исключаю InvoicePostcode, содержащий B, за которым следует буква

SELECT * FROM orders
WHERE (InvoicePostcode LIKE 'b%' AND NOT InvoicePostcode RLIKE '^(B[A-Z])')
OR (InvoicePostcode LIKE 'ws%' AND NOT InvoicePostcode RLIKE '^(WS[A-Z])')
ORDER BY InvoiceNumber ASC
0

Другие решения

Ты можешь использовать сопоставление с образцом решить эту проблему.

Что вам нужно знать, так это шаблон, который вы ищете, чтобы дать вам пример, если вы ищете все почтовые индексы, начиная с B, только тогда вы знаете, что эти почтовые индексы будут

  1. Должен иметь первый символ как B. В ссылке есть примеры выбора первого символа (^) и 1 экземпляра ({1}, равного ‘B’ или ‘b’).
  2. Второй символ может быть любым числом

Точно так же вы можете сделать для всех других моделей.

0

Вы можете использовать предложение REGEXP для того же.

Например.:
выберите * из заказов, где (InvoicePostcode REGEXP ‘^ B [^ BS].‘ИЛИ InvoicePostcode REGEXP’ ^ WS.«)

‘^ B [^ BS]. *’ В этом он будет игнорировать слова, начинающиеся с BB ИЛИ BS.

Надеюсь, это поможет вам.

0

SELECT * FROM orders
WHERE (InvoicePostcode LIKE 'b%' AND NOT InvoicePostcode RLIKE '^(B[A-Z])')
OR (InvoicePostcode LIKE 'ws%' AND NOT InvoicePostcode RLIKE '^(WS[A-Z])')
ORDER BY InvoiceNumber ASC

пожалуйста, обратитесь: https://www.guru99.com/regular-expressions.html

Оператор RLIKE выполняет сопоставление шаблона строкового выражения с шаблоном. Шаблон предоставляется в качестве аргумента. Следующая инструкция MySQL найдет имя автора, начинающееся с буквы «B». Символ «^» использовался для соответствия началу имени.

SELECT * FROM orders WHERE InvoicePostcode RLIKE '^B';
[A-Z] Соответствует любой заглавной букве

[A-Z] Соответствует любой строчной букве

«^ (B [A-Z])» означает, что он будет работать как первая буква B, а следующий — от A до Z — нет.

0
По вопросам рекламы [email protected]