[R] Unrecognized token

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Tue Sep 17 20:22:11 CEST 2013


> id <- c("21328","78789D")
> query <- paste(paste("select * from tbl_user where student_id = ", 
id,sep=""), " order by date_time", sep="")
> query
[1] "select * from tbl_user where student_id = 21328 order by date_time"
[2] "select * from tbl_user where student_id = 78789D order by date_time"

Now, does the second string look like valid SQL to you? In particular, the 
78789D is a problem. On the other hand...

> query <- paste(paste("select * from tbl_user where student_id = '", 
id,sep=""), "' order by date_time", sep="")
> query
[1] "select * from tbl_user where student_id = '21328' order by date_time"
[2] "select * from tbl_user where student_id = '78789D' order by 
date_time"

As others have pointed out, in this case escaping does not appear to be 
key to getting valid SQL syntax... but looking at the query before 
shipping it off to a database engine seems to me to be an obvious 
technique you should learn.

On Tue, 17 Sep 2013, srecko joksimovic wrote:

> There is no difference, the same query structure is in the both cases:"6683"
> "character"
> "character"
> "select * from students where student_id = 6683 order by date_time"
> "4738D"
> "character"
> "character"
> "select * from students where student_id = 4738D order by date_time"
> 
> and still is the same error
> 
> 
> On Tue, Sep 17, 2013 at 9:47 AM, srecko joksimovic
> <sreckojoksimovic at gmail.com> wrote:
>       thanks, Jeff,
> good point... I'll try that
> 
> 
> On Tue, Sep 17, 2013 at 9:43 AM, Jeff Newmiller
> <jdnewmil at dcn.davis.ca.us> wrote:
>       Why don't you print the 'query' variable with each id
>       value and consider what the SQL syntax is for number and
>       string literals. Then study the use of escaping in strings
>       ("\\") to fix the query.
> ---------------------------------------------------------------------------
>
>       Jeff Newmiller                        The     .....      
>       .....  Go Live...
>       DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.      
>       ##.#.  Live Go...
>                                             Live:   OO#.. Dead:
>       OO#..  Playing
>       Research Engineer (Solar/Batteries            O.O#.      
>       #.O#.  with
>       /Software/Embedded Controllers)               .OO#.      
>       .OO#.  rocks...1k
> ---------------------------------------------------------------------------
>
>       Sent from my phone. Please excuse my brevity.
>
>       srecko joksimovic <sreckojoksimovic at gmail.com> wrote:
>       >Hi,
>       >
>       >when I generate query using sqldf library, like this:
>       >query = paste(paste("select * from tbl_user where
>       student_id = ", id,
>       >                sep=""), " order by date_time", sep="")
>       >
>       >student <- sqldf(query)
>       >
>       >everything works fine in case the id is "21328", "82882",
>       or something
>       >like
>       >that. But, when id is something like "78789D", there is
>       an error:
>       >Error in sqliteExecStatement(con, statement, bind.data) :
>       >  RS-DBI driver: (error in statement: unrecognized token:
>       "78789D")
>       >
>       >I tried replacing single quotes with double, but it still
>       doesn't
>       >work...
>       >
>       >thanks,
>       >Srecko
>       >
> >       [[alternative HTML version deleted]]
> >
> >______________________________________________
> >R-help at r-project.org mailing list
> >https://stat.ethz.ch/mailman/listinfo/r-help
> >PLEASE do read the posting guide
> >http://www.R-project.org/posting-guide.html
> >and provide commented, minimal, self-contained, reproducible
> code.
> 
> 
> 
> 
>

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------


More information about the R-help mailing list