将字符作为参数传递给R中的db函数

时间:2016-01-12 10:57:10

标签: sql r odbc

我想知道如何在我的 R user-defined function下方传递2个字符 sql.r<-function(x,y){ # Load RODBC package library(RODBC) # Create a connection to the database called "con" con <- odbcConnect("odbccalc", uid=xxx, pwd=xxx, believeNRows=FALSE) # Check that connection is working (Optional) odbcGetInfo(con) # Find out what tables are available (Optional) Tables <- sqlTables(con, schema="tblData") # Query the database and put the results into the data frame "dataframe" dataframe <- sqlQuery(con, " SELECT lbl,Date, dot FROM tblData t WHERE t.lbl="'',x,"'' AND t.Date <"'',y,"'' ORDER BY t.Date desc") ,并希望有人可以为此提供帮助:

quotes

语法问题可能在于sqlQuery(con, " SELECT lbl,Date, dot FROM tblData t WHERE t.lbl='fruit' AND t.Date < '2015-06-01' ORDER BY t.Date desc")

的管理

工作语法,如果有帮助

pygame.Rect()

最佳,

2 个答案:

答案 0 :(得分:2)

您必须通过@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getInstalledApps(this); ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listview, results); ListView listView = (ListView) findViewById(R.id.mobile_list); listView.setAdapter(adapter); listView.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //your code here } paste构建查询。试试这个:

paste0

关键是 dataframe <- sqlQuery(con, paste0(" SELECT lbl,Date, dot FROM tblData t WHERE t.lbl='",x,"' AND t.Date <'",y,"' ORDER BY t.Date desc")) 需要两个参数:sqlQuery和一个字符串。该字符串是您要执行的connection命令。如果命令取决于某些输入,则必须相应地构建字符串。 sqlpaste允许您这样做。您将sprintfx变量的值放在表示命令的字符串中。这不是特定于SQL的,而只是标准的字符串操作。

答案 1 :(得分:2)

正如其他人所说,您可以使用pastepaste0来构建查询。但是,sprintf函数也可以解决问题。我认为这更容易阅读,因为你避免使用混合的单引号和双引号。

即。在你的函数中执行以下操作:

query <- sprintf("SELECT lbl, Date, dot
                 FROM
                 tblData t
                 WHERE t.lbl= '%s'
                 AND   t.Date < '%s'
                 ORDER BY t.Date desc", x, y)
sqlQuery(con, query)