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')“))
SQL-Abfrage mit Unterstrich in Parameter
-
- Beiträge: 2
- Registriert: Mo Sep 11, 2023 12:37 pm
Re: SQL-Abfrage mit Unterstrich in Parameter
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 mitversuchen.
LG,
Bernhard
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\";"))
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
-
- Beiträge: 2
- Registriert: Mo Sep 11, 2023 12:37 pm
Re: SQL-Abfrage mit Unterstrich in Parameter
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
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
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
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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: SQL-Abfrage mit Unterstrich in Parameter
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)?
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)?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
![Bild](https://i.creativecommons.org/l/by/4.0/88x31.png)