Seite 1 von 1

SQL-Abfrage mit Unterstrich in Parameter

Verfasst: Mo Sep 11, 2023 1:11 pm
von Maispflanze
Hallo,
ich versuche eine SQL-Abfrage auf eine Datenbank mit einem Parameter zu erstellen . Der Parameter z.B. „EU_23“ enthält einen Unterstrich. Dies scheint ein Problem zu sein. Leider bekomme ich folgende Fehlermeldung:
Error: unexpected symbol in:
" HAVING VERSUCH.Art LIKE 'EU%[ _ ]%23'))
Merk <- sqlQuery(myconnPiaf, glue::glue("SELECT"[/color][/color]

Was kann ich machen, damit R den Unterstrich akzeptiert?

Hier ist die Syntax meiner Abfrage:
Merk <- sqlQuery(myconnDB, glue::glue("SELECT Versuch.Art,…. HAVING Versuch.Art LIKE 'EU%[ _ ]%23')“))

Re: SQL-Abfrage mit Unterstrich in Parameter

Verfasst: Mo Sep 11, 2023 2:30 pm
von bigben
Hallo,

auf die Gefahr, was dummes zu schreiben: Das unexpected symbol ist sicher der Unterstrich und nicht etwa die schließende Klammer hinter dem zweiten Hochkomma, wo ich anstelle einer schließenden Klammer ein Semikolon erwarten würde?

A propos Hochkomma, Du hast keine Backticks ` zum Maskieren des _ verwendet sondern das einfache Apostroph '
Anscheinend gehen verschiedene SQL-Dialekte unterschiedlich damit um, was alles als Anführungszeichen akzeptiert wird.
Kennst Du Dich im von Dir verwendeten DBMS gut genug aus um sicher zu sein, dass das die richtigen Anführungszeichen sind?
Sonst könnte man es nochmal mit

Code: Alles auswählen

sqlQuery(myconnDB, glue::glue("SELECT Versuch.Art,…. HAVING Versuch.Art LIKE \"EU%[ _ ]%23\";"))
versuchen.

LG,
Bernhard

Re: SQL-Abfrage mit Unterstrich in Parameter

Verfasst: Mo Sep 11, 2023 3:40 pm
von Maispflanze
Vielen Dank Bernhard,

wenn ich den Unterstrich weglasse, läuft die Abfrage durch. Natürlich ist der Dataframe leer, weil es keine Daten zu "EU23" gibt, aber unter "EU_23".

Leider hat dein Vorschlag auch nicht funktioniert.
Unter Values steht folgende Meldung: chr [1:2] "HY000 -104 [ODBC Firebird Driver] [Firebird] Dynamic SQL Error\nSQL code= -104\nToken unknown - line 13, Column 28]n?" " [RODBC] ERROR: Could not SQLExeDirect #SELECT VErsuch.Art <...>

Bzgl. der Anführungszeichen bin ich mir keineswegs sicher, was die richtigen sind.
Wie würde denn die Variante mit Backticks aussehen?

Vielen Dank!
LG Ralf

Re: SQL-Abfrage mit Unterstrich in Parameter

Verfasst: Di Sep 12, 2023 11:04 am
von bigben
Hallo Ralf,

ich habe leider gar keine Erfahrung mit SQL und SQL in R und kannte glue vorher gar nicht. Daher kann ich auch beim Analysieren der Fehlermeldung nicht helfen.

Was ich mit Backticks meinte ist folgendes: Hier siehst Du zwei verschiedene Zeichen hinter dem Doppelpunkt: '`

Es kann leicht passieren, dass man beide miteinander verwechselt, Computerprogramme können aber ohne weiteres mit dem einen funktionieren und mit dem anderen nicht. In Deinem Eingangspost steht

> Merk <- sqlQuery(myconnDB, glue::glue("SELECT Versuch.Art,…. HAVING Versuch.Art LIKE 'EU%[ _ ]%23')“))

Ich weiß nicht, ob Du gesehen hast, dass Du hier zwei verschiedene Zeichen für doppelte Anführungszeichen hast: " und “
Letzteres scheint kein Problem zu sein, wenn das Statement ohne den Unterstrich funktioniert, es ist nur eine Fehlerquelle, die auch ich als Nicht-SQL-Kundiger vermuten konnte.

Sorry, mehr kann ich nicht bieten.
Viel Erfolg noch bei der Fehlersuche,
Bernhard

Re: SQL-Abfrage mit Unterstrich in Parameter

Verfasst: Do Sep 14, 2023 11:09 pm
von EDi
Wie soll denn die Abfrage am Ende aussehenß Und läuft diese dann auch so in der Datenbank (ohne R)?

Die Abfrage im Ausgangspost hat einige komische Sachen (..., Klammer, ")...
Wozu brauchst du glue hier?
Fehlt da nicht ein FROM und eine GROUP BY (wenn man HAVING nutzen will)?