schelinho
Goto Top

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!

Content-ID: 369554

Url: https://administrator.de/contentid/369554

Ausgedruckt am: 24.11.2024 um 18:11 Uhr

Pedant
Pedant 28.03.2018 um 14:21:11 Uhr
Goto Top
Hallo Schelinho,

Zitat von @Schelinho:
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.

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%^%'  
Die %-Zeichen, die nicht die Variable markieren, müssen maskiert werden, damit sie %-Zeichen bleiben.
Ausgabe
aa.aa_name Like '%XYZ%'
(Bei Eingabe von XYZ)

Gruß Frank
Schelinho
Schelinho 28.03.2018 um 14:33:54 Uhr
Goto Top
"Skript" ist ja schön, aber in welcher Sprache hast Du es geschrieben und in welcher Umgebung soll es laufen?
--> .sql - script, welches ich aktuell im PL/SQL-Developer ausführe.

"abfragen lassen"? Telefonisch oder im persönlichen Gespräch?
--> Es öffnet sich ein Eingabefenster, wo der User den Begriff eingibt für die Variable, wonach gesucht werden soll.
Schelinho
Schelinho 28.03.2018 aktualisiert um 15:09:39 Uhr
Goto Top
Funktioniert jetzt. Doch so einfach..

and aa.aa_name Like '%&aa_name%'
Pedant
Lösung Pedant 28.03.2018 aktualisiert um 16:09:28 Uhr
Goto Top
Hallo Schelinho,

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.

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'
(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.