不久,我正在使用JDBC
我正在尝试编写一个查询,该查询将从 SQL 开发人员数据库表返回一些值。
到目前为止我有这个:
#Query for getting data
sql <- paste("select *
FROM GRID Z
where Z.LAT = Xlat AND Z.LON = Xlon")
fun <- dbGetQuery(jdbcConnection, sql)
attach(fun)
问题是Xlat
和Xlon
是 R 中的变量,它们的值经常变化,所以我不能真正将它们硬传递到查询中。显然,Z.LAT
和Z.LON
对应GRID
表。
问题是:是否可以在查询中使用 R 变量?
我还想知道是否可以代替 =
是否有一些东西可以匹配最接近或最接近的值。
感谢任何建议。谢谢
编辑:另一种方法是 SELECT *
从我的 table 上,然后“玩”fun
为了得到我的值(value)观。对此有什么想法或做法吗?
注意: jdbcConnection
正在请求远程连接。
最佳答案
你在找这个吗?
sql <- paste0("select *
FROM GRID Z
where Z.LAT ='", Xlat,"' AND Z.LON = '", Xlon,"'")
我假设你的变量是字符。如果上面的代码在 Web 服务器后面运行,则可以选择 URL 编码和转义以避免代码注入(inject)...例如 this
编辑:关于此:
我还想知道是否有一些东西可以代替 = 来匹配最接近或最接近的值。
由于您是通过 SQL 引擎执行查询,因此这更像是一个 SQL 问题,而不是 R 问题。就像 @Vivek 所说,你可以在 sqldf 中做到这一点,但我猜你的数据位于远程数据库中,所以在这种情况下它没有帮助。
所有 SQL 风格都有 like
,因此只需在查询中使用它即可。如果我误解了您的问题,请告诉我。
sql <- paste0("select *
FROM GRID Z
where Z.LAT like '", Xlat,"' AND Z.LON like '", Xlon,"'")
关于sql - 使用 R 变量进行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23562175/