2017-03-06 50 views
1

如何在DBgetquery中使用R對象?在DBgetquery中使用R對象

例如

我有R中一些選定的ID作爲topIds topIds = C( 'A', 'B', 'C' ......)

我希望查詢細節只有這些topID

query =dbgetquery(conn, " SELECT AGE , NAME 
          FROM table 1 
          where ID= paste0('topIds')) 

如何將topIds R對象放入查詢中以獲取我的信息?

回答

1

有關變量的簡短列表(在Oracle不到1000周的鍵),你可以使用paste

對於數字鍵簡單的粘貼帶分隔符,

> numLst <- c(1,2,3) 
> paste('select * from T where id in (',paste(numLst, collapse=','),')') 
[1] "select * from T where id in (1,2,3)" 

對於字符鍵,你必須additionaly引用字符串:

> charLst <- c('a','b','c') 
> quotedLst <- mapply(paste0, "'", charLst, "'") 
> paste('select * from T where id in (',paste(quotedLst, sep="'", collapse=','),')') 
[1] "select * from T where id in ('a','b','c')" 

如果你有大量的密鑰,你可以將它們放在一個數據庫表第一(檢查dbWriteTablesqlSave),並限制在關鍵直接數據庫查詢。

0

您需要塌陷topIds並paste0到查詢,像這樣

ids_for_query <- paste0(topIds, collapse = ',') 
query <- paste0("SELECT AGE , NAME 
FROM table 1 where ID IN(", ids_for_query, ")", sep = '') 

然而,你可能會遇到一個問題,如果topids是非常大的