SQL-Query - Like Operator - Usereingabe
Hallo!
Ich habe ein SQL-Script, welches als solches auf der Datenbank im SQL-Developer funktioniert. Mir geht es um eine Zeile:
and aa.aa_name Like '%XYZ%'
Wenn ich das skript dann ausführe, bekomme ich alle ergebnisse, wo aa_name "XYZ" enthält - passt also.
Jetzt möchte ich, dass ich diesen Wert "XYZ" aber nicht direkt im Skript eingeben muss, sondern abfragen lassen kann.
Bei dem operator '=' wäre das ja mit '&aa_name'
Bei Like bekomm ich das aber nicht hin..
Habs zB mit aa.aa_name Like ('"%"&aa_name"%"' ) versucht, funktioniert aber leider nicht..
Vielen dank im Voraus für eure Hilfe!
Ich habe ein SQL-Script, welches als solches auf der Datenbank im SQL-Developer funktioniert. Mir geht es um eine Zeile:
and aa.aa_name Like '%XYZ%'
Wenn ich das skript dann ausführe, bekomme ich alle ergebnisse, wo aa_name "XYZ" enthält - passt also.
Jetzt möchte ich, dass ich diesen Wert "XYZ" aber nicht direkt im Skript eingeben muss, sondern abfragen lassen kann.
Bei dem operator '=' wäre das ja mit '&aa_name'
Bei Like bekomm ich das aber nicht hin..
Habs zB mit aa.aa_name Like ('"%"&aa_name"%"' ) versucht, funktioniert aber leider nicht..
Vielen dank im Voraus für eure Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 369554
Url: https://administrator.de/contentid/369554
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Schelinho,
1. "Skript" ist ja schön, aber in welcher Sprache hast Du es geschrieben und in welcher Umgebung soll es laufen?
2. "abfragen lassen"? Telefonisch oder im persönlichen Gespräch?
Falls Dein Skript eine Batchdatei ist, dann poste sie mal, zumindest den relevanten Teil.
Da
Weiterhin von Batch ausgehend, sind die %-Zeichen vermutlich die Schwierigkeit.
Batch
Die %-Zeichen, die nicht die Variable markieren, müssen maskiert werden, damit sie %-Zeichen bleiben.
Ausgabe
Gruß Frank
Zitat von @Schelinho:
Jetzt möchte ich, dass ich diesen Wert "XYZ" aber nicht direkt im Skript eingeben muss, sondern abfragen lassen kann.
Jetzt möchte ich, dass ich diesen Wert "XYZ" aber nicht direkt im Skript eingeben muss, sondern abfragen lassen kann.
1. "Skript" ist ja schön, aber in welcher Sprache hast Du es geschrieben und in welcher Umgebung soll es laufen?
2. "abfragen lassen"? Telefonisch oder im persönlichen Gespräch?
Falls Dein Skript eine Batchdatei ist, dann poste sie mal, zumindest den relevanten Teil.
Zitat von @Schelinho:
Habs zB mit aa.aa_name Like ('"%"&aa_name"%"' ) versucht, funktioniert aber leider nicht.
Habs zB mit aa.aa_name Like ('"%"&aa_name"%"' ) versucht, funktioniert aber leider nicht.
Da
and aa.aa_name Like '%XYZ%'
funktioniert, warum dann die zusätzlichen Klammern und massenhaft Anführungszeichen?Weiterhin von Batch ausgehend, sind die %-Zeichen vermutlich die Schwierigkeit.
Batch
set /p aa_name=
echo and aa.aa_name Like '^%%aa_name%^%'
Ausgabe
aa.aa_name Like '%XYZ%'
(Bei Eingabe von XYZ)Gruß Frank
Hallo Schelinho,
sorry, den PL/SQL-Developer kenne ich nicht.
Wäre das der Fall, hätte ich Deine Ausgangsfrage vermutlich auch verstanden.
Was ist damit?
... oder wenn's so einfach nicht ist, dann vielleicht die Variable erst per Userpromt belegen,
im zweiten Schritt die %-Zeichen dazuaddieren (Stringverknüpfung)
und dann in Like-Satement anwenden:
(Das ist mehr eine Idee, als eine verifizierte Syntax)
Gruß Frank
EDIT: Ich hatte beim Antworten wiedermal nicht darauf geachtet, ob es zwischenzeitig schon weitere Antworten gibt.
sorry, den PL/SQL-Developer kenne ich nicht.
Wäre das der Fall, hätte ich Deine Ausgangsfrage vermutlich auch verstanden.
Zitat von @Schelinho:
Habs zB mit aa.aa_name Like ('"%"&aa_name"%"' ) versucht, funktioniert aber leider nicht.
Habs zB mit aa.aa_name Like ('"%"&aa_name"%"' ) versucht, funktioniert aber leider nicht.
Was ist damit?
aa.aa_name LIKE '%&aa_name%'
... oder wenn's so einfach nicht ist, dann vielleicht die Variable erst per Userpromt belegen,
im zweiten Schritt die %-Zeichen dazuaddieren (Stringverknüpfung)
und dann in Like-Satement anwenden:
DEFINE aa_name = &aa_name
DEFINE aa_name = '%' || &&aa_name || '%'
SELECT ... WHERE aa.aa_name LIKE '&&aa_name'
Gruß Frank
EDIT: Ich hatte beim Antworten wiedermal nicht darauf geachtet, ob es zwischenzeitig schon weitere Antworten gibt.