如何创建data.table的philos变量适配glue_sql的SQL IN查询?
解决glue_sql生成IN子句的问题
要让glue_sql生成符合SQL规范的IN子句,只需要确保philos是字符型向量,直接使用glue_sql的{变量名*}语法即可,工具会自动完成字符串转义与拼接。
完整代码示例
# 加载所需包 library(data.table) library(glue) # 创建data.table对象 Name <- c('Plato','Hegel','Nietzsche') Amount <- c(10,20,30) ID <- c('x01','x02','y02') dt <- data.table(Name, Amount, ID) # 提取Name列作为字符向量,无需额外处理 philos <- dt[["Name"]] # 生成SQL查询语句(con为你的数据库连接对象) query <- glue_sql("select * from philosophers where names in ({philos*})", .con = con)
效果说明
运行后query会生成标准的SQL语句:
select * from philosophers where names in ('Plato','Hegel','Nietzsche')
如果向量中包含带特殊字符的元素(比如O'Neil),glue_sql会自动处理转义,生成符合SQL语法的'O''Neil',避免语法错误。
内容的提问来源于stack exchange,提问作者highbury
相关产品推荐
相关产品推荐

