sql >> Databáze >  >> RDS >> Oracle

Je možné dotazovat se na konkrétní hodnotu ve sloupci odděleném čárkami?

Můžete pomocí LIKE. Nechcete přiřazovat dílčí hodnoty, takže budete muset do vyhledávání zahrnout čárky. To také znamená, že pro hledání hodnot na začátku nebo na konci textu budete muset zadat čárku navíc:

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

Tento dotaz však bude pomalý, stejně jako všechny dotazy používající LIKE, zejména s úvodním zástupným znakem.

A vždy existuje riziko. Pokud jsou kolem hodnot mezery nebo hodnoty mohou obsahovat samy čárky, v takovém případě jsou ohraničeny uvozovkami (jako v souborech csv), tento dotaz nebude fungovat a budete muset přidat ještě více logiky, čímž se váš dotaz zpomalí ještě více.

Lepším řešením by bylo přidat podřízenou tabulku pro tyto kategorie. Nebo spíše samostatnou tabulku pro kategorie a tabulku, která je propojuje s vaší tabulkou.



  1. Výkon MySQL:Jak využít indexování databáze MySQL

  2. GROUP BY bez agregační funkce

  3. Jak převést pole json na řádky v postgresu

  4. Oracle počet řádků tabulky podle počtu(*) vs. NUM_ROWS z DBA_TABLES