DB2: Upper in Unterabfragen nicht möglich

fuDDel

Mitglied
Hi,

ich habe mir ein SQL gebaut und fing dann an mir entsprechende Suchfelder zu übergeben. Da ich ein Textfeld mit LIKE durchsuchen möchte, wollte ich ein simples UPPER verwenden, damit der Benutzer nicht darauf achten muss, was er groß und was er klein schreibt.
Das SQL sieht grob so aus:

Code:
SELECT * FROM ( 
	SELECT A.*, B.*,
         ROW_NUMBER() OVER() AS RN
			FROM BIBLIOTHEK/DATENBANKDATEI AS A
				LEFT OUTER JOIN BIBLIOTHEK/DATENBANKDATEI2 AS B
					ON [..] Diverse Verknüpfungen [..]
					
				WHERE A.FELD1 = 1
				  AND UPPER(A.FELD2) LIKE UPPER('".$VALUE."%')
	) AS COL
	WHERE RN between ".$VON." and ".$BIS

Als Fehlermeldung bekomme ich leider nur ein Aussagekräftiges:
"Funktion nicht für die Abfrage unterstützt."

Ohne das Upper funktioniert die Abfrage wunderbar, ich brauche es aber.
Jemand eine Idee?

Für Hilfe und Anregungen wär ich sehr dankbar.

Gruß
 
Moin fuDDel,

Eins versteh ich nicht.
Wenn Du doch immer zwei zwei geUPPERte Wrte miteinander vergleichst, wieso übergibst du nicht dein ".$VALUE." gleich in GROSSGESCHRIEBEN?

Prozessor durchpusten?

Ein
...UPPER(A.FELD2) LIKE '".$myVALUE."%' ..
.... könnte doch auch nicht so viel langsamer sein.

Und ich würde (falls es keine Dummy-bezeichnung hier fürs Forum war) nicht ausgerechnet DB-seitig reservierte Worte wie "VALUE" als Platzhalter in Statements verwenden.

Interessehalber: Du greifst mit PHP auf eine DB2-LUW v8/v9 auf einer Linux-Büchse zu?

Grüße
Biber
 
Hi Biber2,

ob ich nun UPPER(A.FELD2) LIKE '".$myVALUE."%' oder UPPER(A.FELD2) LIKE upper('".$myVALUE."%') mache ist egal, es kommt zu einem Fehler.

Das SQL was ich hier gepostet habe, ist ein Dummy um das Problem darzustellen nichts weiter :)
Und ja ich nutze PHP, gehe damit aber auf eine AS/400(i5) DB2

Gruß
 
Hi again,

ich bin normalerweise niemand der seinen Thread pusht aber ich komme hierbei einfach nicht weiter. Das genauere Problem liegt wohl bei der Unterstützung von OLAP Funktionen in der Unterabfrage.
"Code 6 -- Eine OLAP-Funktion wird für diese Abfrage nicht unterstützt."

Was auch immer das genau heißen mag.
Es wäre schön, wenn hier jemand eine Idee hat, wie man das ganze evtl. umgehen kann. Mir fällt einfach nichts gescheites ein. :(

Gruß
 
Hi,

ich schon wieder -.-
Ich habe jetzt herausgefunden, dass es am ROW_NUMBER() OVER() AS RN im Zusammenhang mit UPPER liegt.
Wenn ich das ROW_NUMBER() OVER() AS RN nicht verwende kann ich auch wie gewohnt UPPER verwenden.
Allerdings fällt mir dazu dann keine gescheite Lösung mehr ein, wie ich Pagelinks hinbekomme damit ich nicht alle Einträge auf einer Seite bekomme sondern nur auf Seite 1 Eintrag 1-20; Seite 2 Eintrag 21-40 etc.

Jemand schonmal eine andere Lösung dafür gefunden ausser ROW_NUMBER() ?
Sowas schönes wie LIMIT gibt es da leider nicht.

Gruß
 
Zurück