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

Wyszukaj tablicę postów w wartości kolumny oddzielonej przecinkami

Rozwiązanie 1:

Jak skomentował @Jens, to zły projekt DB do przechowywania wartości jako CSV. Więc pierwszym rozwiązaniem byłaby zmiana projektu DB, ponieważ tak naprawdę nie wiem, co przechowujesz i jaki jest cel twojego DB/kodu. nie może napisać schematu ani podać żadnej sensownej sugestii.

Rozwiązanie 2:

Użyj find_in_set funkcja.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Rozwiązanie 3:

Możesz użyć LIKE operator. (Niektórzy członkowie prawdopodobnie zabiją mnie za to, że to zasugerowałem, ale jeśli nie chcesz zmieniać projektu DB - to jest twórcza opcja).

Sprawdźmy następujący kod:

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

Problem polega na tym, że zwróci identyfikator pola z 22, w kolumnie filter_data. Dlatego musisz zmienić dane w tej kolumnie, tak aby , pojawi się również jako pierwszy i ostatni znak. Na przykład:

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

A teraz możesz wykonać następujące czynności:

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

Jeśli masz wiele „filtrów wyszukiwania”, możesz połączyć LIKE s z LUB operatora.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony 2:INNER JOIN na niepowiązanej tabeli z konstruktorem zapytań doktryny

  2. MySQL - zaznaczanie w pobliżu punktu przestrzennego

  3. Jak dołączyć schemat bazy danych MySQL na GitHub?

  4. Kiedy ostatni raz uzyskano dostęp do tabeli mysql?

  5. Menedżer kontekstu dla MySQLdb w Pythonie