You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RSQLite dbGetQuery如何使用数据框参数批量执行SQL LIKE查询

问题根因
  • 构造SQL语句时额外多包裹了一层外层单引号,导致传入的SQL格式异常,触发字符串解析错误
  • 模糊匹配需要的%通配符没有添加到关键词两侧,即使语法修复也无法命中包含目标关键词的记录
解决方案

快速修复单条查询

修正拼接逻辑,去掉多余引号、补充通配符即可正常执行:

keyword <- df[1,1]
# 通配符直接拼在关键词两侧,无需额外加外层单引号
sqlcomp <- paste0("SELECT name, registered_address FROM company WHERE LOWER(name) LIKE LOWER('%", keyword, "%')")
dbGetQuery(db, sqlcomp)

批量查询所有企业名

用循环遍历所有关键词查询后合并结果即可:

library(dplyr)
# 遍历数据框内所有企业名查询
result_list <- lapply(df[[1]], function(keyword) {
  sql <- paste0("SELECT name, registered_address FROM company WHERE LOWER(name) LIKE LOWER('%", keyword, "%')")
  return(dbGetQuery(db, sql))
})
# 合并所有查询结果
final_result <- bind_rows(result_list)

安全优化方案(推荐)

使用参数化查询避免SQL注入风险,无需自行处理引号转义:

# 预定义带参数占位符的SQL语句
template_sql <- "SELECT name, registered_address FROM company WHERE LOWER(name) LIKE LOWER(?)"

# 批量执行参数化查询
result_list <- lapply(df[[1]], function(keyword) {
  # 通配符添加到参数值中
  query_param <- paste0("%", keyword, "%")
  return(dbGetQuery(db, template_sql, params = list(query_param)))
})
final_result <- bind_rows(result_list)

内容的提问来源于stack exchange,提问作者Valentin Franke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:54:03