Jakub
Panas
Konsultant
techniczny,
IPR-Insights
Temat: [DB2] predykat LIKE lub równoważny
Witam,DB2 wersja 8.5 na solarisie 8 64-bit, kodowanie UTF.
mam dwie tabele:
TMP z polem KOD typu varchar 13
oraz
OPAK z polem OPIS typu varchar 750
potrzebuję wyciągnąć listę wierszy z OPAK, które w polu OPIS mają ciąg znaków z pola KOD
Zapytanie:
select
TMP.KOD,
OPAK.ID
from TMP,
OPAK
WHERE
OPAK.OPIS = ('%' || TMP.KOD || '%')
order by TMP.KOD;
Zwraca pusty wynik (dane testowe są tak wstawione, że powinny wyjść 3 wiersze).
zamiana '=' na 'LIKE'
OPAK.OPIS LIKE ('%' || TMP.KOD || '%')
zwraca błąd:
QL0132N Predykat LIKE lub funkcja skalarna POSSTR są niepoprawne, ponieważ
pierwszy operand nie jest wyrażeniem łańcuchowym lub drugi operand nie jest
łańcuchem. SQLSTATE=42824
Odwrotna kolejność porównania ('%' || TMP.KOD || '%') LIKE OPAK.OPIS daje taki sam błąd.
Czy da się to sprawdzić jednym zapytaniem/warunkiem.
Pozdrawiam,
Jakub Panas