2016-09-06 2 views
2

ich eine SQL-Abfrage durch R auszuführen versuche, die Daten aus Access DB zu erhaltenSQL ausführen mit „gefällt mir“ Anweisung in R Sprache

normale SQL-Anweisung funktioniert gut, aber wenn es darum geht Aussage seiner Wurffehler mögen

Im Folgenden finden Sie den Code ein:

library(RODBC); 
channel = odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/ADMIN/Documents/R.accdb") 
test = sqlQuery(channel ,paste('SELECT R.ID, R.Template, R.WEDate FROM R WHERE R.Template Like "*slow*"')) 

Fehler: "07002 -3010 [Microsoft] [ODBC Microsoft Access-Treiber] Zu wenige Parameter Erwartete 2." [1]
[2] "[RODBC] FEHLER: konnte nicht SQLExecDirect‚SELECT R.ID, R.Template, R.WEDate FROM R WHERE (R.Template Wie \" langsam \") '

Gibt es eine Möglichkeit, dies zu beheben.

+1

Nur ein Gedanke, versuchen Sie '%' anstelle von '*'. – joran

+0

@joran Immer noch der gleiche Fehler –

+1

Versuchen Sie, Ihre Verwendung von doppelten und einfachen Anführungszeichen (einfache Anführungszeichen auf der Innenseite, doppelte auf der Außenseite). – joran

Antwort

2

beide von @ joran Vorschläge Betrachten mit Apostroph Stringliterale umschließt und die ANSI-92 Wildcard-Operator % verwenden. Sie Sternchen verwenden würden, * (ANSI-89-Modus), wenn eine interne Lauf Abfrage, nämlich innerhalb des MSAccess.exe-GUI-Programms (die standardmäßig auf DAO) oder wenn Sie extern mit Access mit DAO verbinden.Inzwischen verwenden ADO-Verbindungen das Prozentzeichen, das die meisten externen Schnittstellen verwendet einschließlich RODBC.

Ich konnte Ihr Problem reproduzieren und beide Mittel funktionierten. Außerdem müssen Sie paste() nicht verwenden, da Sie kein anderes Objekt mit einer Abfrageanweisung verketten.

library(RODBC); 
channel = odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)}; 
          DBQ=C:/Users/ADMIN/Documents/R.accdb") 

test = sqlQuery(channel, 
       "SELECT R.ID, R.Template, R.WEDate FROM R WHERE R.Template Like '%slow%'") 
+0

diese Kombination funktioniert gut, Danke für die Idee bro –

Verwandte Themen