gpt4 book ai didi

sql - 将R Vector传递给Sql查询

转载 作者:行者123 更新时间:2023-12-03 13:45:07 26 4
gpt4 key购买 nike

我正在使用RODBC软件包访问R中的sql数据库。我无法找到有关如何将向量从R作为向量传递给sql的任何有用信息。

    id <- ('00003', '00100')
query <- sqlQuery(channel = channel, query = "select *
from prod_cust_vw.store_dim
where store_num in id")

我想将id向量传递给sql而不是对其进行硬编码。

最佳答案

1)sprintf id转换为适合包含在SQL语句中的字符串,然后使用sprintf将其插入sql字符串中。请参见?sprintf

id <- c('00003', '00100')
idString <- toString(sprintf("'%s'", id)) # "'00003', '00100'"
sql_fmt <- "select * from prod_cust_vw.store_dim where store_num in (%s)"
sql <- sprintf(sql_fmt, idString)
sql
## [1] "select * from prod_cust_vw.store_dim where store_num in ('00003', '00100')"

2)fn $ 或使用gsubfn软件包中的 fn$。在 sqlQuery(或任何R函数)前面加上 fn$会导致扫描实际参数,并将$ variables替换为其内容(此处,变量名应仅包含字母和数字,以便区分它们和其他字符串)。参见 ?fn
library(gsubfn)

fn$sqlQuery(channel = channel, query = "select *
from prod_cust_vw.store_dim
where store_num in ($idString)")

关于sql - 将R Vector传递给Sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47834160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com