WHERE-KLAUSEL mit DECODE()

ustasahi

Neuer Benutzer
Beiträge
2
Hallo zusammen, ich hatte vor ein paar Tagen eine Frage gestellt, die ich mittlerweile gelöst habe.

Nun bin ich wieder an ein Problem geraten, an dem ich verzweifle.

Folgendes Select Statement ist gegeben:

Select mandant, auftragsnummer, auftragskennung, kundennummer
from entnahmeauftrag
where auftragsnummer like :auftragsnummer


Diese Select-Anweisung liefert mit eine Tabelle mit den, im select genannten, Spalten.
Die auftragsnummer, die sich im Where-Teil befindet ist ja das Feld, wozu der Bediener aufgefordert wird eine nummer einzugeben, um somit die Selektion evtl einzuschränken.

Momentan ist das möglich und zwar mit dem "%" Zeichen. Sprich wenn der Benutzer nichts in das Feld eingibt, erscheinen auch keine Daten. Der Benutzer müsste "%" eingeben, damit irgendwelche Daten erscheinen. ABER der Benutzer soll auch in der Lage sein nichts einzugeben, damit Daten erscheinen.

Dazu habe ich recherchiert und fest gestellt, dass man bestimmte Felder mit der Decode-Funktion "decoden" kann, jedoch immer in der Select-Anweisung.
Weiß jemand, wie man das in der Where-Klausel macht?

Also z.B.

Select mandant, auftragsnummer, auftragskennung, kundennummer
from entnahmeauftrag
where auftragsnummer like decode(auftragsnummer, "", %, auftragsnummer)


Das "" ist quasi wenn der Benutzer nichts in das Feld eingibt.

Hoffe ihr könnt mir helfen.
Danke euch :)
 
Werbung:
Also dein :auftragsnummer in deinem gezeigten Select wird vermutlich von deiner Anwendung in den Such-String übersetzt, das ist so erstmal kein SQL Bestandteil daher kann ich dazu nur Vermutungen anstellen.

DECODE() scheint aus Oracle zu sein, das kenne ich noch nicht. Du nutzt aber MySQL(?) und dort gibt es das nicht 1:1. Funktionieren könnte es aber so wie du es vor hast:
MySQL equivalent of DECODE function in Oracle

Du könntest aber auch auf die Idee kommen das % grundsätzlich vor (und hinter) den Suchstring zu packen damit immer mit der Methode gesucht wird.
 
Hi,
nur kurz als Info: DECODE und ENCODE gibt es in MySQL

Code:
mysql> SELECT DECODE(ENCODE("Hallo","crypt"),"crypt");
+-----------------------------------------+
| DECODE(ENCODE("Hallo","crypt"),"crypt") |
+-----------------------------------------+
| Hallo                                   |
+-----------------------------------------+
1 row in set, 2 warnings (0,00 sec)
 
Werbung:
Zurück
Oben