2017-11-23 12 views
-1

私がMySQLの検索クエリを作成したいが、私がBまたはWSで始まるのみ郵便番号を表示したいが、問題がある、これまでMysqlの検索郵便番号

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

をやっていることですいくつかは、ポスト例えば郵便番号の開始時にBBまたはBSを含んで

BS24 8EE

BB9 8SY

それは郵便番号

+3

他の同様の質問をスタックオーバーフローで検索します。いくつかは正規表現を提案しています –

答えて

0

あなたが特定のパターンを排除するために正規表現を使用するように試みることができる:

私はあなたが同じのためREGEXP節を使用でき手紙

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

ありがとうございます – bean2k1

0

中の数字は、あなたがにpattern matchingを使用することができます前に、唯一の開始時に文字を見て、郵便番号をチェックする方法がわからない、この1つのB65 0NQイムのようなBで始まる示すべきである唯一のものこの問題を解決してください。あなたが知る必要がある何

はあなたがこれらの郵便番号は

  1. は、最初の文字を持っている必要がありますことを知っているだけにしてBで始まるすべての郵便番号を検索する場合、あなたの例を与えるために、あなたが探しているパターンです。 B.として「B」または「B」まで({1}に等しい最初の文字(^)を選択するためのリンクの例と1つのインスタンスがある。
  2. 番目の文字を使用すると、同様に、任意の数

であることができ他のパターンについても同様に行う。

0

続くBを含むInvoicePostcodeを除外する以下で。

例: が( ' WS ^' InvoicePostcode REGEXP '^のB [^ BS] ' OR InvoicePostcode REGEXP)受注SELECT * FROM

'^ B [^ BS】*' でBB OR 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 

PLSを参照:https://www.guru99.com/regular-expressions.html

RLIKE演算子はパターンに対するストリング発現パターンマッチングを行います。パターンは引数として提供されます。次のMySQLステートメントは、 'B'で始まる著者名を見つけるでしょう。 '^'は名前の先頭に一致するために使用されています。

SELECT * FROM orders WHERE InvoicePostcode RLIKE '^B'; 

[AZ] 一致する大文字

[AZ] は、任意の小文字と一致し

'^(B [AZ])は' は、最初の文字Bとして動作する手段次のAかZかどうかはわかりません。