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

カンマ区切り値を検索する方法

    短期的な解決策

    FIND_IN_SET関数> :

    WHERE FIND_IN_SET('Queensland', csv_column)
    

    ...どちらかの端にワイルドカードを指定してLIKEを使用することは、一致する量/少ない数によっては危険であるためです(また、テーブルスキャンも保証されます)。どちらかの側にワイルドカードを使用したLIKEのパフォーマンスは、REGEXPと同等です。つまり、悪いことを意味します。

    長期的なソリューション

    カンマ区切りの値を保存しないでください。3つのテーブルを含む適切な多対多の関係を使用してください。

    物事

    • things_id(主キー)

    オーストラリアの州

    • State_id(主キー)
    • State_name

    Things_to_Auz_States

    • things_id(主キー、THINGSへの外部キー 表)
    • State_id(主キー、AUSTRALIAN_STATESへの外部キー 表)

    3つのテーブルからデータを取得するには、JOINが必要ですが、特定の状態または2つの特定の状態に関連付けられている数などを知りたい場合は、適切なモデルです。



    1. Oracleで英数字のみを含む行を返す2つの方法

    2. mysqlの日付とdate_formatの比較

    3. JDBC接続のデフォルトのautoCommit動作

    4. ランニングトータル/ランニングバランスを計算する