来自Shiny的RODBC多输入

时间:2014-08-07 16:41:58

标签: sql r shiny rodbc

我有一个有复选框组输入的Shiny应用程序。用户可以选择多个输入。我还有一个链接到数据库的ODBC连接。该过程将是当用户从复选框组中选择项目时,该用户输入将是sql查询中用于过滤数据的字符串的一部分。

UI.R(部分显示示例)

checkboxGroupInput('Type', 'Type', c(
                          "AX"="AX",
                          "AY"="AY",
                          "AZ"="AZ",
                          "BGB"="BGB",
                          "BT"="BT",
                          "BX"="BX",
                          "BXT"="BXT",
                          "C"="C",
                          "CNT"="CNT")),

表中的列" Type"信息在里面被称为COMPONENT,所以我使用RODBC的SQL查询是

data <- odbcConnect("database", uid="username", pwd="password")
query <- (SELECT ID, NAME, TYPE FROM COMPONENT WHERE TYPE LIKE Input$Type)
df <- odbcQuery(data, query)

查询行不起作用,但我不知道如何获取多个输入并将它们正确放置在查询中。此外,还有一个额外的复杂程度,我不知道如何处理。数据库中的数据是字母数字,因此它可能被列为AX14或AX 71而不是AX。此外,因为有一些字母类型,使用通配符似乎有点困难。

1 个答案:

答案 0 :(得分:1)

要回答有关&#34;查询中的多个输入的初始问题&#34;,我使用连接来实现此目的。

使用paste0(),我写了如下内容:

  

type =&#34; AX14&#34;
  myQuery&lt; - paste0(&#34;从my_table中选择变量1,变量2,类型为&#34;,类型)
  更改为MyQuery
  [1]&#34;从my_table中选择变量1,变量2,类型为AX14&#34;

您可以按如下方式添加单引号或通配符运算符等内容:

  

myQuery&lt; - paste0(&#34;选择变量1,来自my_table的变量2,类型为&#39;%&#34;,类型,&#34;%&#39;&#34;)
  更改为MyQuery
  [1]&#34;从my_table中选择变量1,变量2,类型为&#39;%AX14%&#39;&#34;&

然后继续实际运行查询:

df&lt; - odbcQuery(data,myQuery)