首页 > 解决方案 > 如何在没有“c”的圆括号中将矢量放入胶水中?

问题描述

我写了一个代码:


my_values <- dbGetQuery(con, stri_encode(stores_query, to = "UTF-8")) %>%
  as.data.table()


table_query <- glue("
SELECT
  *
FROM MY_DB
WHERE 
  values IN {my_values} AND
LIMIT 100
")

输出是:

SELECT
  *
FROM MY_DB
WHERE 
  values IN c("john", "mike", "alex") AND
LIMIT 100

但是我需要这个:

SELECT
  *
FROM MY_DB
WHERE 
  values IN ('john', 'mike', 'alex') AND
LIMIT 

如您所见,我需要没有矢量符号“c”,才能使我的查询工作。我还需要值在“”中,而不是在“”中。怎么做?

标签: rstring

解决方案


使用glue_sql(), 并*在里面的变量名占位符之后添加{…}

table_query <- glue_sql("
SELECT
  *
FROM MY_DB
WHERE 
  values IN ({my_values*}) AND
LIMIT 100
", .con = con)
SELECT
  *
FROM MY_DB
WHERE 
  values IN ('john', 'mike', 'alex') AND
LIMIT 100

推荐阅读