SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

jak wybrać wiersz danych z pola wartości oddzielonej przecinkami

Nigdy nie jest dobrze używać wartości oddzielonych przecinkami do przechowywania w bazie danych, jeśli jest to wykonalne, spróbuj utworzyć oddzielne tabele do ich przechowywania, ponieważ najprawdopodobniej jest to 1:n związek.

Jeśli nie jest to możliwe, możesz to zrobić w następujący sposób:Jeśli liczba wartości do dopasowania pozostanie taka sama, możesz wykonać serię Like oświadczenie wraz z OR/AND w zależności od wymagań.

Np.-

WHERE
    Media LIKE '%21%'
    OR Media LIKE '%30%'
    OR Media LIKE '%40%' 

Jednak powyższe zapytanie prawdopodobnie przechwyci wszystkie wartości zawierające 21 więc nawet jeśli kolumny z wartościami takimi jak 1210 ,210 również zostanie zwrócony. Aby rozwiązać ten problem, możesz wykonać następującą sztuczkę, która zmniejsza wydajność, ponieważ używa funkcji w where klauzula i to jest sprzeczne z tworzeniem Pargable zapytania.Ale oto idzie,

--Declare valueSearch variable first to value to match for you can do this for multiple values using multiple variables.

Declare @valueSearch = '21'

-- Then do the matching in where clause
WHERE 
    (',' + RTRIM(Media) + ',') LIKE '%,' + @valueSearch + ',%'

Jeśli liczba wartości do dopasowania ma się zmienić, możesz zajrzeć do Indeks pełnotekstowy i powinieneś pomyśleć o tym samym. A jeśli zdecydujesz się na to po Fulltext Index możesz zrobić, co poniżej, aby uzyskać to, czego chcesz,

Np.-

WHERE 
     CONTAINS(Media, '"21" OR "30" OR "40"')


  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Zapytanie o aktualizację anulowane przez użytkownika

  2. SQL Server Management Studio — dokumenty z zakładkami

  3. Połączenie SSMS z Sybase ASE

  4. Polecenie SQL Dodaj diagramy bazy danych

  5. Jak otworzyć wiele plików .sql tylko w jednej instancji ssms?