2015-04-12 59 views
0

我有一個表達式max(51)。我想用表達式中的參數(即51)替換數據庫中關於這個ID的值。所以我替換的表達式如下:用R中的查詢替換表達式參數

max(dbGetQuery(con,"SELECT VALUE FROM STUD WHERE ID=51")) 

其中con是MySQL連接對象。 我曾嘗試以下,以提取表達

PARAMETER <- gsub(".*\\((.*)\\)$", "\\1", "MAX(51)"); 

參數現在,我的最終表現將成爲這樣的事情:

max(dbGetQuery(con,"SELECT VALUE FROM STUD WHERE ID=PARAMETER")); 

那麼如何替換在R中可以做什麼?這只是一個操作數表達式。它可以爲更復雜的表達式可以像

max(51)+min(52)-53 

謝謝..

+0

發表您的嘗試。 。 –

+0

您是否已經有了需要搜索和替換的SQL查詢,或者您是否構建了查詢方R? –

+0

我準備好了SQL查詢。 –

回答

0

我已經通過以下方式實現這一點:

operand <- "max(51)"; 
PARAMETER <- gsub(".*\\((.*)\\)$", "\\1", operand); 
QUERY=gsub("PARAMETER",PARAMETER,"SELECT VALUE FROM STUD WHERE ID='PARAMETER'"); 
Final_SubExpression <- gsub(PARAMETER,"dbGetQuery(con,QUERY)",operand); 
Result <- eval(parse(text=Final_SubExpression)); 
Result; 

OR

operand <- "max(51)"; 
PARAMETER <- gsub(".*\\((.*)\\)$", "\\1", operand); 
QUERY=sprintf("SELECT VALUE FROM STUD WHERE ID = '%s'", PARAMETER); 
Final_SubExpression <- gsub(PARAMETER,"dbGetQuery(con,QUERY)",operand); 
Result <- eval(parse(text=Final_SubExpression)); 
Result;