Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy możliwe jest zapytanie kolumny oddzielonej przecinkami dla określonej wartości?

Możesz, używając LIKE. Nie chcesz dopasowywać wartości częściowych, więc w wyszukiwaniu musisz uwzględnić przecinki. Oznacza to również, że będziesz musiał podać dodatkowy przecinek, aby wyszukać wartości na początku lub na końcu tekstu:

select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'

Ale to zapytanie będzie powolne, podobnie jak wszystkie zapytania używające LIKE, zwłaszcza z wiodącym symbolem wieloznacznym.

I zawsze istnieje ryzyko. Jeśli wokół wartości są spacje lub wartości mogą zawierać przecinki, w takim przypadku są otoczone cudzysłowami (jak w plikach csv), to zapytanie nie zadziała i będziesz musiał dodać jeszcze więcej logiki, spowalniając zapytanie jeszcze więcej.

Lepszym rozwiązaniem byłoby dodanie tabeli podrzędnej dla tych kategorii. A raczej osobna tabela dla kategorii i tabela, która łączy je krzyżowo z TwojąTabelą.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czym są procedury składowane PL/SQL w bazie danych Oracle

  2. 2 funkcje, aby uzyskać rok z daty w Oracle

  3. Obsługa danych nasion w patchowaniu online R12.2

  4. wyświetl niestandardowy tekst sql z wyniku kolumny tabeli

  5. Jaki jest domyślny rozmiar danych wejściowych varchar2 do procedury składowanej Oracle i czy można go zmienić?