アップデータ:
カンマスプライスの方法は、sn の格納方法で確認できます。
では、sn フィールドの一致検索はどのように行うのでしょうか?
①いいね(考慮しない)
まず、カンマ スプライシング内のデータに 1 や 11 などの繰り返し値が含まれていないことを確認できない限り、like は使用できません。like を使用して 1 を検索すると、1 と 1 のデータが直接検索されます。 11.
したがって、いいねは考慮されません。
②正規表現の正規一致
これで問題ありませんが、書き方に注意してください。カンマで区切っているので、正規表現を正しく記述する必要があります。
まず正しい使用例を見てみましょう。
単一値: REGEXP '(^|,)(検索される値)(,|$)'
複数の値: REGEXP '(^|,)(最初の値|2番目の値)(,|$)'
複数の中間部分は | で区切る必要があります。
select * from product_extra where sn REGEXP '(^|,)(1)(,|$)';
複数の一致:
③セット内検索 シングル検索
FIND_IN_SET(str, strlist) : str はクエリ対象の文字列、strlist はクエリ対象のフィールド、パラメータは「,」で区切られ、形式は (1,2,6,8,10,22) のようになります。この関数の機能は、フィールド (strlist) に (str) の結果が含まれているかどうかを問い合わせることです。戻り結果は null またはレコードです。
SELECT * FROM product_extra WHERE FIND_IN_SET('1',sn);
ただし、 セット内検索は 単一の一致です。同時に複数の一致を行いたい場合は、 または を使用する必要があります。
SELECT * FROM product_extra
WHERE FIND_IN_SET('11',sn) OR FIND_IN_SET('3',sn);
さて、この記事はここまでです。