Oracle
 sql >> база данни >  >> RDS >> Oracle

Възможно ли е да се запита колона, разделена със запетая, за конкретна стойност?

Можете, като използвате LIKE. Не искате да съвпадате за частични стойности, така че ще трябва да включите запетаите във вашето търсене. Това също означава, че ще трябва да предоставите допълнителна запетая, за да търсите стойности в началото или края на текста:

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

Но тази заявка ще бъде бавна, както и всички заявки, използващи LIKE, особено с водещ заместващ знак.

И винаги има риск. Ако има интервали около стойностите или стойностите могат да съдържат самите запетаи, като в този случай те са заобиколени от кавички (като в csv файлове), тази заявка няма да работи и ще трябва да добавите още повече логика, забавяйки заявката си още повече.

По-добро решение би било да добавите дъщерна таблица за тези категории. Или по-скоро дори отделна таблица за категориите и таблица, която ги свързва кръстосано с YourTable.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:как да използвам UNION и да поръчам по конкретен избор?

  2. Възможно ли е да се предаде името на таблицата като параметър в Oracle?

  3. Пивот в Oracle 11g

  4. Oracle PL/SQL - съвети за незабавен изход / конзолен печат

  5. 11 начина за намиране на дублиращи се редове, които имат първичен ключ в Oracle