Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wyszukać wartość oddzieloną przecinkami

Rozwiązanie krótkoterminowe

Użyj funkcji ZNAJDŹ_IN_SET :

WHERE FIND_IN_SET('Queensland', csv_column)

...ponieważ używanie LIKE z symbolami wieloznacznymi na obu końcach jest ryzykowne, w zależności od tego, ile/mało pasuje (a także zapewnia skanowanie tabeli). Wydajność funkcji LIKE z symbolami wieloznacznymi po obu stronach jest na równi z REGEXP — to oznacza złe.

Rozwiązanie długoterminowe

Nie przechowuj wartości rozdzielanych przecinkami — użyj odpowiedniej relacji wiele-do-wielu obejmującej trzy tabele:

Rzeczy

  • thing_id (klucz podstawowy)

Australijskie Stany

  • State_id (klucz podstawowy)
  • Nazwa_stanu

Rzeczy_do_Auz_States

  • thing_id (klucz podstawowy, klucz obcy do THINGS stół)
  • State_id (klucz podstawowy, klucz obcy do AUSTRALIAN_STATES stół)

Będziesz potrzebować JOIN, aby uzyskać dane z trzech tabel, ale jeśli chcesz wiedzieć, jak wiele jest powiązanych z konkretnym stanem lub dwoma konkretnymi stanami, to jest to właściwy model.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy soft_delete Laravela potrzebuje indeksu na MySQL?

  2. Zmuś użytkowników do posiadania najnowszej wersji aplikacji na Androida

  3. WYBIERZ najnowszy rekord z wartością inną niż null w jednej kolumnie

  4. skopiować strukturę bazy danych bez danych w mysql (z pustymi tabelami)

  5. Jak ustawić ustawienia regionalne dla bieżącego połączenia w MySQL?