sql >> Databáze >  >> RDS >> Mysql

Jak hledat hodnotu oddělenou čárkou

Krátkodobé řešení

Použijte funkci FIND_IN_SET :

WHERE FIND_IN_SET('Queensland', csv_column)

...protože použití LIKE se zástupnými znaky na obou koncích je riskantní v závislosti na tom, kolik/málo se shoduje (a také zajišťuje skenování tabulky). Výkon LIKE se zástupnými znaky na obou stranách je na stejné úrovni jako REGEXP – to znamená špatné.

Dlouhodobé řešení

Neukládejte hodnoty oddělené čárkami – použijte správný vztah mnoho k mnoha, který zahrnuje tři tabulky:

Věci

  • thing_id (primární klíč)

Australské státy

  • State_id (primární klíč)
  • Název státu

Things_to_Auz_States

  • thing_id (primární klíč, cizí klíč k THINGS tabulka)
  • State_id (primární klíč, cizí klíč pro AUSTRALIAN_STATES tabulka)

K získání dat ze tří tabulek budete potřebovat JOINy, ale pokud chcete vědět věci, jako je počet přidružených ke konkrétnímu stavu nebo ke dvěma konkrétním stavům, je to správný model.



  1. jak zkontrolovat, zda je databáze konzistentní po nedokončené obnově

  2. Jak přidat spouštěcí skript do kontejneru mysql docker?

  3. mysql dvousloupcový primární klíč s automatickým přírůstkem

  4. Redundance N+1 a konsolidace serverů