sql >> データベース >  >> RDS >> Mysql

投稿配列をコンマ区切りの列値で検索します

    ソリューション1:

    @Jensがコメントしたように、値をCSVとして保存するのは悪いDB設計です。したがって、最初の解決策は、何を保存しているか、DB /コードの目的がわからないため、DB設計を変更することです。スキームを書いたり、意味のある提案をしたりすることはできません。

    ソリューション2:

    MySQLの find_in_set<を使用します/ code> 機能。

    SELECT id FROM table
    WHERE FIND_IN_SET(searchFilterHere, filter_data)
    

    ソリューション3:

    LIKEを使用できます オペレーター。 (一部のメンバーはおそらくそれを提案したことで私を殺すでしょうが、DBデザインを変更したくない場合は、これは創造的なオプションです)。

    次のコードを確認しましょう:

    SELECT id FROM table WHERE filter_data LIKE '%2,%'
    

    問題は、 22、のフィールドのIDが返されることです。 filter_dataの列にあります。したがって、その列の下のデータを変更する必要があるため、 最初と最後の文字としても表示されます。例:

    id | filter_data   |
    ---|---------------
    1  |,2,3,45,67,4,  |
    2  |,2,3,55,33,5,7,|
    

    そして今、あなたは以下を行うことができます:

    SELECT id FROM table WHERE filter_data LIKE '%,2,%'
    

    複数の「検索フィルター」がある場合は、 LIKEを組み合わせることができます s OR オペレーター。




    1. すべてのパッケージでテーブルや列を検索するためのクエリ

    2. PostgreSQLでカテゴリ別に最大日付グループのIDを選択するにはどうすればよいですか?

    3. T-SQLで日付順に並べ替える方法

    4. Postgresで日時をUNIXエポック値に変換するにはどうすればよいですか?