从列表名称及其值生成SQL查询

GWD*_*GWD 2 r list rodbc

基本上我试图通过unlistingpaste-ing一个列表来派生SELECT语句的WHERE部分,其中列表名称代表数据库TABLE列和相应的列表值等于WHERE子句的参数.这是一个简化的例子......

lst <- list(DATE=as.Date('2015-10-25'), NUM="0001", PROD="SOMETHING")
lst
    $DATE
[1] "2015-10-25"

$NUM
[1] "0001"

$PROD
[1] "SOMETHING"
Run Code Online (Sandbox Code Playgroud)

理想情况下,这将被转换为(从第二行开始的有趣位WHERE):

"SELECT SOME_COLUMNS WHERE  
DATE = '", lst$DATE, "' AND 
NUM = '", lst$NUM, "' AND 
PROD = '" lst$PROD ,"'")
Run Code Online (Sandbox Code Playgroud)

我很确定有人知道一些奇特的组合apply(),

paste(..,collapse ="' AND ")和/或substitute()那可以以优雅的形式实现,但我被卡住了.

dig*_*All 5

我不知道这是否足够优雅,但应该有效:

sql <- paste0("SELECT ", 
              paste0(names(lst),collapse=','), 
              " WHERE\n",
              paste(lapply(names(lst),function(x)paste0(x," = '",lst[[x]],"'")),collapse="AND\n"))

> cat(sql)
SELECT DATE,NUM,PROD WHERE
DATE = '2015-10-25'AND
NUM = '0001'AND
PROD = 'SOMETHING'
Run Code Online (Sandbox Code Playgroud)