这是此问题的后续:Working with reactiveValues and ggplot in shiny 。我正在制作一个查询 SQL 数据库的 Shiny 应用程序。在我针对该问题的工作示例中,我通过使用 CAST
自动导入特定格式的数据,成功避免了更改 Shiny 中 react 数据的格式:
不带强制转换的查询
b <- reactive({ paste("select Wafer, Batch, MeasurementA, MeasurementB from dd where ID=",e()," Order by ID asc ;", sep="") })
使用强制转换进行查询以自动更改列格式
b <- reactive({ paste("select cast(Wafer as varchar) as Wafer, cast(Batch as varchar) as Batch, MeasurementA, MeasurementB from dd where ID=",e()," Order by ID asc ;", sep="") })
这在我用于解决问题的工作示例中效果很好。但是,当我将其应用到我的真实应用程序时,我收到语法错误:
b <- reactive({ paste("select cast(e.erf_num as varchar) as ERF, cast(w.wafer_id as varchar) as Wafer, d.name,d.row,d.col,d.width,d.length,t.test_date,
t.von_fwd,t.vth_fwd,t.sts_fwd,t.on_off_fwd,t.curr_on_fwd,t.curr_off_fwd,t.rds_on_fwd, t.rds_on_fwd,
t.von_rev,t.vth_rev,t.sts_rev,t.on_off_rev,t.curr_on_rev,t.curr_off_rev,t.rds_on_rev, t.rds_on_rev, t.delta_vth, t.id
from transfer_data_temp AS t
inner join wafer AS w ON t.wafer_id=w.id
inner join device AS d ON t.device_id=d.id
inner join erf AS e on t.wafer_id=e.wafer_id
where
t.wafer_id=",e()," Order by d.name asc , t.test_date;", sep="") })
Unhandled error in observer: could not run statement: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'varchar), cast(wafer.wafer_id as varchar), d.name,d.row,d.col,d.width,d.length,t' at line 1
我知道该查询无需 CAST 即可工作,因为我之前曾成功使用过它。所以我提请注意查询的这一部分:
b <- reactive({ paste("select cast(e.erf_num as varchar) as ERF, cast(w.wafer_id as varchar) as Wafer,
有什么想法为什么这适用于前者但不适用于后者?如果有帮助的话,我可以发布我的所有代码以提供完整的工作示例(避免使用 ATM,因为它有点长)。谢谢。皮特
最佳答案
啊好吧,出于某种原因,如果我将 AS varchar
更改为 AS character
它就可以工作。不要没有为什么。在问问题之前我应该多玩一会儿!
关于mysql - R Shiny 应用程序中的 SQL 查询语法 - CAST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933289/