MySQLには2つのテーブルがあり、それ以外は除外されています。テーブルのテーブルexclusions
にない商品をすべて選択する必要があります。除外が「直接的な」フィールド等価、すなわち製品の参照コードを通じて行われるとき、私は成功しました。MySQL検索の正規表現
しかし、多くの製品はパターンで除外できます。これは、参照コードの最後の3桁で構成されます。したがって、値が「++ 6」の場合、そのシーケンスの第3桁、すなわち参照コードの最後の桁は6でなければならないことを意味する.6であれば、その製品は除外される。私が立ち往生している場所です。どのような正規表現や何かを使用する必要がありますか? パターンは完全に '0 + 6'、 '036'などになる可能性があります。
サンプルテーブルの構造とデータ、および参照と連動するSELECTを貼り付けます。問題は、 "pattern"で除外を説明できる正規表現(または何でも)を含むようにSELECTを変更することです。
CREATE TABLE IF NOT EXISTS `exclusions` (
`id_exclusions` int(11) NOT NULL AUTO_INCREMENT,
`reference` varchar(10) NOT NULL,
`pattern` varchar(3) NOT NULL,
PRIMARY KEY (`id_exclusions`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
INSERT INTO `exclusions` (`id_exclusions`, `reference`, `pattern`) VALUES
(1, '8036', ''),
(2, '', '++5');
CREATE TABLE IF NOT EXISTS `products` (
`id_products` int(11) NOT NULL AUTO_INCREMENT,
`reference` varchar(10) NOT NULL,
PRIMARY KEY (`id_products`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `products` (`id_products`, `reference`) VALUES
(1, '8034'),
(2, '8035'),
(3, '8036');
今現在
SELECT * FROM products AS p LEFT JOIN exclusions AS e ON p.reference = e.reference WHERE e.reference IS NULL
結果作業SELECTコード:修正SELECTで
id_products, reference, id_exclusions, reference, pattern
1, 8034, NULL, NULL, NULL
2, 8035, NULL, NULL, NULL
は、それだけで 'XX5' として
id_products, reference, id_exclusions, reference, pattern
1, 8034, NULL, NULL, NULL
を返す必要があります参照コードは除外されます。
結果はOKです!!。テーブル製品には3行あり、参照(8036)との一致は** ** 1つだけなので、他の2つの行が表示されます** "WHERE e.reference IS NULL" ** –
製品コード?それは文字列の任意の長さを考慮する必要がありますか? xx5をmysqlの正規表現に変換する必要がありますか、それともバックエンドで行うことはできますか? –
あなたは異なるデータを持つあなたのテーブルの出力が何であるかもっと多くのサンプルを投稿していただけますか –