メッセージの表があります。特定の形式に準拠した ID コードを持つメッセージをテーブルで検索しようとしています。以下に示す正規表現は、PHP でこれらの値を照合するために作成されたものですが、MySQL クエリに移動したいと考えています。
次のような特定の形式の識別子コードを探しています。
[692370613-3CUWU]
コードの形式は一貫しています。
- ハードブラケット [ ] で開始および終了
- 内部の 2 つのコンポーネント、
- 1 つ目は口座番号で、最小 9 桁ですが、それ以上になる場合もあります
- 2 番目のコンポーネントは英数字コードで、5 文字で、1 ~ 9 を含めることができ、「O」を除く大文字を使用できます
- 完全なコードは、メッセージ内のどこにでも出現できます
次のようなクエリがあります。
SELECT * FROM messages
WHERE
msgBody REGEXP '\\[(\d){9,}-([A-NP-Z1-9]){5}\\]'
OR
msgSubject REGEXP '\\[(\d){9,}-([A-NP-Z1-9]){5}\\]'
テスト用に msgBody フィールドに上記のサンプル値のみを含むテーブルにテスト行を作成しましたが、結果は返されません。
PHP スタイルの正規表現と MySQL の変換で何かが欠けていると思います。
助けていただければ幸いです。
ありがとうございました!