Operatory like i in

0

Hej! Będę wdzięczny za pomoc. Pytanie dotyczy języka T-SQL.

operator LIKE '%' zwróci mi tak na prawdę wszystkie rekordy.
Czy jest możliwość zastąpienia go z takim samym skutkiem operatorem IN?
Niestety IN ('%') zwraca mi zbiór pusty. Czy jest to w ogóle możliwe do zrobienia? I jeśli tak, to czym musiałbym zastąpić '%'?

Mam nadzieję, że zrozumiale napisałem pytanie.

0

Dziwny taki warunek. Nie wiem jak w T-SQL, ale spróbuj

operator in (operator)
0

nie da się tak - in to in like to like i każde z nich działa inaczej. Możesz za to rozbić to na

... where aa like '%a' or aa like '%a' or aa like '%b' or aa like '%c' or aa like '%d' ...

co oczywiście zabije bazę no ale jak masz taki kaprys to proszę bardzo

0

Czyli jednak się nie da tak tego rozwiązać.
Rozbicie też nie wchodzi w grę, bo to, co przchodzi po in jest parametrem, kórego nie da się przewidzieć i ten '%' jest tylko jdną z możliwości.
Muszę to zatem rozwiązać jakoś przepływem w IFach, ale to zdubluje kod, czego chciałem uniknąć.

Dzięki za pomoc!

0

po co in skoro masz tylko JEDEN parametr????

0

bo ten parametr to ciąg znaków, kóry rozbijam na kilka wartości oddzielonych separaorem, które tworzą zbiór wartości z tabeli :)
Stąd i, bo choć to jeden parametr, to tak na prawdę zawiera zbiór watości. Tylko brakuje mi czegoś w rodzaju 'all', gdzie wtedy brałby wszystkie wartości, lub całkiem wyrzucał ten warunek z where'a.

0

skoro i tak składasz zapytanie to co za problem zamiast separatora zrobić or. Przecież to jeden pies.

0

Ale to ma być dynamiczne. Nie przewidzę co będzie się w tym parametrze znajdować.

0

Możesz to zrobić tak:

SELECT * FROM tabela t JOIN (SELECT 'a' wyraz UNION ALL SELECT 'b' UNION ALL SELECT 'c') x ON t.wyraz LIKE '%' + x.wyraz + '%'

powinno zadziałać :)

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