[R] Searching for a string in RSQLite

Duncan Murdoch murdoch at stats.uwo.ca
Thu Nov 25 16:37:49 CET 2004


I'd like to search for a particular string in an SQLite database using
RSQLite, but I'm running into problems constructing the query
properly, because of embedded quotes and parens in the string.

Is there a function that escapes these for me, or some other fixup
that would let me do the queries below?  In the real situation I don't
have control over what strings get searched for.

Example based on ?SQLite:

> library(RSQLite)
> m <- dbDriver("SQLite")
> con <- dbConnect(m, dbname = "base.dbms")
> data(USArrests)
> dbWriteTable(con, "USArrests", USArrests, overwrite = T)
[1] TRUE
> state <- "Wyoming"

# this works fine:

> dbGetQuery(con, paste("SELECT * from USArrests where row_names='",state,"'",sep=""))
  row_names Murder Assault UrbanPop Rape
1   Wyoming    6.8     161       60 15.6

# Buf if the search string contains characters that SQL interprets, I
# get an error

> state <- "messy:  ' ("
> dbGetQuery(con, paste("SELECT * from USArrests where row_names='",state,"'",sep=""))
Error in sqliteExecStatement(con, statement) : 
        RS-DBI driver: (error in statement: near "(": syntax error)

Duncan Murdoch




More information about the R-help mailing list