SQL-Abfrage mit Unterstrich in Parameter

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Maispflanze
Beiträge: 2
Registriert: Mo Sep 11, 2023 12:37 pm

SQL-Abfrage mit Unterstrich in Parameter

Beitrag 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')“))
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: SQL-Abfrage mit Unterstrich in Parameter

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Maispflanze
Beiträge: 2
Registriert: Mo Sep 11, 2023 12:37 pm

Re: SQL-Abfrage mit Unterstrich in Parameter

Beitrag 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
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: SQL-Abfrage mit Unterstrich in Parameter

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: SQL-Abfrage mit Unterstrich in Parameter

Beitrag 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)?
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
Bild.
Antworten