sql - 使用 R 变量进行 SQL 查询

标签 sql r oracle jdbc

不久,我正在使用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)

问题是XlatXlon是 R 中的变量,它们的值经常变化,所以我不能真正将它们硬传递到查询中。显然,Z.LATZ.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/

相关文章:

sql - 如何使用 SQL Server 找到最接近零的值

mysql - 如何使列值的唯一组合?

c# - 强类型数据集不会填充,表映射问题? c#.net 2.0

oracle通过join sql-92组合选择星号连接

sql - oracle嵌套表中的最大行数是多少

mysql - 当一个表不是 'main' 时如何连接 3 个表

mysql - 具有默认关系的左连接

r - 根据 R 数据框中的变量填充 N 个滞后

c - R中15个数字的排列

r - 为什么 for 循环中的这个表达式在 R 中表现得很奇怪?