Oracle "where mit mehreren optionalen Bedingungen"

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

dhuuk42

Grünschnabel
Hallo Leute,

aktuell habe ich für eine Datenbanktabelle drei Abfragen für unsere User

Abfrage1_Artikelnummer - Sucht in der Datenbank nach der Artikelnummer
Abfrage2_Filiale - Sucht in der Datenbank nach der Filialnummer
Abfrage3_ArtNr&Filiale - Sucht in der Datenbank Artikelnummer UND Filiale

Gerne würde ich dies in einer Abfrage abfrühstücken, dies würde bedeuten dass where Bedingungen optional sind. Wenn keine Werte eingegeben werden soll die Abfrage die where Bedingung ignorieren.

Anbei der Quelltext, das Ganze funktioniert für den Typ Filiale - Hier kann ich eingeben oder die Bedingung leer lassen und ich bekomme Ergebnisse. Ich vermute es funktioniert, weil die Filiale ein String ist - Die HHM/Artikelnummer ist eine Zahl hier funktioniert es nicht, die Abfrage bricht ab mit
"ORA-00911": Ungültiges Zeichen
Habt Ihr eine Idee wie ich das umgehen kann? :)

Grüße dhuuk

SQL:
select out_order_id,
       substr(consignee_no,-4,3),
       consignee_delivery_order,
       nve_scc_out,
       article_no,
       article_desc,
       komi_start_date,
       komi_end_date,
       ladung_end_date
  from tbl_log_hg_wa
  where article_no like &<name="HHM" ifempty="%">
        and substr(consignee_no,-4,3) like &<name"Filiale" type="string" ifempty="%">
  order by ladung_end_date desc, article_no desc, substr(consignee_no,-4,3) asc;
 
Und wenn du article_no zu string castest?
Also in der Art: "..... to_char(article_no) like&<name="HHM" ifempty="%">...."
 
Hab ich auch schon versucht, weiterhin ORA-00911 :/

korrigiere es läuft!

Code:
to_char(article_no) like &<name="HHM" type="string" ifempty="%">

Wichtig ist im %< > Block noch den type als string zu definieren, dann klappt es. Danke für den Schubs in die richtige Richtung!
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück