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-Key: 369554

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

Printed on: April 26, 2024 at 15:04 o'clock

Member: Pedant
Pedant Mar 28, 2018 at 12:21:11 (UTC)
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
Member: Schelinho
Schelinho Mar 28, 2018 at 12:33:54 (UTC)
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.
Member: Schelinho
Schelinho Mar 28, 2018 updated at 13:09:39 (UTC)
Goto Top
Funktioniert jetzt. Doch so einfach..

and aa.aa_name Like '%&aa_name%'
Member: Pedant
Solution Pedant Mar 28, 2018 updated at 14:09:28 (UTC)
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.