使用变量约束的 sqlQuery 不起作用。
sqlQuery using a variable constraint not working.
我正在尝试使用 R 中的 RODBC 包将查询传递给 Access。我可以使用 sqlFetch 导入整个表,但我希望使用查询来挑选数据。
但是,我想使用 R 变量来 select 约束之一 (Shaft_ID)。
为了构造 SQL 查询,我同时使用了 Cat 和 Paste,因此我可以在 Shaft 变量周围使用引号。
我的代码如下:
Shaft<- "S001"
BL <- sqlQuery(myDBcon, paste("SELECT * FROM BL_FGSL WHERE Shaft_ID ='",Shaft,"'"), error = TRUE, as.is = TRUE)
这将创建一个数据框,但未找到任何值。如果我直接用 "S001" 替换变量就可以了!
伙计们有什么想法吗?
SQL 使用单引号字符 '
,但在 SQL 注入中匹配引号可能会令人恼火,因此不强烈推荐。
我建议将您的查询参数化,并让计算机为您管理报价。
library(RODBC)
library(RODBCext)
Shaft<- "S001"
BL <-
sqlExecute(myDBcon,
query = "SELECT * FROM BL_FGSL WHERE Valid = TRUE AND Shaft_ID = ?",
data = list(Shaft_ID = Shaft),
fetch = TRUE,
stringsAsFactors = FALSE,
error = TRUE)
https://cran.r-project.org/web/packages/RODBCext/vignettes/Parameterized_SQL_queries.html
我正在尝试使用 R 中的 RODBC 包将查询传递给 Access。我可以使用 sqlFetch 导入整个表,但我希望使用查询来挑选数据。
但是,我想使用 R 变量来 select 约束之一 (Shaft_ID)。
为了构造 SQL 查询,我同时使用了 Cat 和 Paste,因此我可以在 Shaft 变量周围使用引号。
我的代码如下:
Shaft<- "S001"
BL <- sqlQuery(myDBcon, paste("SELECT * FROM BL_FGSL WHERE Shaft_ID ='",Shaft,"'"), error = TRUE, as.is = TRUE)
这将创建一个数据框,但未找到任何值。如果我直接用 "S001" 替换变量就可以了!
伙计们有什么想法吗?
SQL 使用单引号字符 '
,但在 SQL 注入中匹配引号可能会令人恼火,因此不强烈推荐。
我建议将您的查询参数化,并让计算机为您管理报价。
library(RODBC)
library(RODBCext)
Shaft<- "S001"
BL <-
sqlExecute(myDBcon,
query = "SELECT * FROM BL_FGSL WHERE Valid = TRUE AND Shaft_ID = ?",
data = list(Shaft_ID = Shaft),
fetch = TRUE,
stringsAsFactors = FALSE,
error = TRUE)
https://cran.r-project.org/web/packages/RODBCext/vignettes/Parameterized_SQL_queries.html