SQL - Opcjonalne pola w warunku where? Filtrowanie danych

0

Witam,
Czy istnieje możliwość żeby w pole warunku where mogło przyjąć dowolną wartość? Napisze brzydko... 'select costam where cos = "*" ' Docelowo, chce stworzyc zapytanie które będzie obsługiwać filtrowanie danych w jednej tabelce. Przykladowo mam 4 pola według, ktorych będzie można filtrować, wypełniam tylko 2, reszta może być dowolna, da się to jakoś obsłużyć w SQLu?
Z góry dziękuję za rady :)
Pozdrawiam!

0

Przy założeniu że pola nie będą zawierać NULL i nie będziesz wyszukiwać NULL-i,
to można to zrobić tak, że parametry (par1, 2, 3, 4) do "pominięcia" ustawiamy na NULL i robimy zapytanie:

SELECT *
FROM xx
WHERE (col1=par1 OR par1 IS NULL)
  AND (col2=par2 OR par2 IS NULL)
  AND (col3=par3 OR par3 IS NULL)
  AND (col4=par4 OR par4 IS NULL) 

Inna sprawa z wydajnością takiego zapytania.
Przy małej tabeli to w sumie bez znaczenia, ale przy milionach rekordów być może lepszym rozwiązaniem
byłoby dynamiczne konstuowanie oddzielnych zapytań zależnie od podanych parametrów.

0

z tym, że taka konstrukcja w oracle ma tendencje do nie używania indeksów :/

0
kordirko napisał(a)

Przy założeniu że pola nie będą zawierać NULL i nie będziesz wyszukiwać NULL-i,
to można to zrobić tak, że parametry (par1, 2, 3, 4) do "pominięcia" ustawiamy na NULL i robimy zapytanie:

Kolego, dzieki wielkie o takie cos mi wlasnie chodzilo :)
Pozdrawiam serdecznie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1