Mysql カンマ ',' 結合された文字列に含まれる一致するデータをクエリするにはどうすればよいですか?

アップデータ:

 カンマスプライスの方法は、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);

 

さて、この記事はここまでです。

おすすめ

転載: blog.csdn.net/qq_35387940/article/details/131421252