当前位置: 首页 > 面试题库 >

RODBC将数字列表放入IN()语句

林亦
2023-03-14
问题内容

我看过’将R变量传递给具有多个条目的RODBC的sqlQuery吗?”,但似乎无法使其正常工作。我正在尝试sqlQuery()在SQL Server 2008
R2数据库上执行R的操作。我正在尝试根据行号从大型数据库中获取样本。首先,我创建了一个随机数列表:

sampRowNum <- sample(seq(1,100000,1), 5000)

然后,我尝试在查询中使用以下数字:

query1 <- sqlQuery(channel, paste("select *      
  FROM db where row_id in (", sampRowNum,")", sep=""))

我只是从db中获得的结果,其中row_id等于中的第一个数字sampRowNum。有什么建议?


问题答案:

您没有paste正确一起查询。

如果单独运行该paste语句,则会看到长度为5000的向量,因此sqlQuery仅执行其中的第一个,对应于中的第一个元素samRowNum

您想要做的是更多这样的事情:

paste("select * FROM db where row_id in (", 
    paste(sampRowNum,collapse = ","),")", sep="")

就像一个附加的注释(而且,由于我不得不做很多这样的事情…),使用IN带有字符串的子句构造sql查询有点麻烦,因为您必须使用所有单引号:

vec <- letters[1:5]

paste("SELECT * FROM db WHERE col IN ('",
    paste(vec,collapse = "','"),"')",sep = "")

[1] "SELECT * FROM db WHERE col IN ('a','b','c','d','e')"

如果您经常这样做,最终将编写一个小的函数来为您完成字符向量的粘贴。

与往常一样,如果您正在处理用户输入(例如,在Web应用程序中),则这种SQL字符串操作由于SQL注入攻击而效果不佳。在我的特定情况下,这不是什么大问题,但是通常来说,如果您对输入值没有太多控制,则人们会更喜欢参数化查询。



 类似资料:
  • 我想把我从stdin收到的一些浮点放在一个列表中。但使用以下程序只返回一个对象。我如何把我收到的彩车放在一个列表中? 输入如下所示:0.1 0.1 0.3 0.4 0.1 0.4 0.2 0.1 0.1 0.2 0.5 0.05 0.15 0.1 0.2 0.6 0.1 0.1 0.1 0.5 0.5 0.2 0.2 0.05 0.05

  • 我需要在一个映射中插入一些数据,该映射需要一个字符串作为键,一个字符串列表作为值,但我不知道怎么做。 这是我试图做的。 首先,我创建了一个HashMap,然后创建了一个新对象,现在出现了问题。 我创建了一个新的字符串列表,给它起了一个名字,然后我认为我必须使用“put”方法,但这是错误的,因为我有一个错误,告诉你:“方法put(String,List)在类型HashMap中 为什么是布尔值?当我在

  • 我希望从R中删除整个dataframe,最好使用带有语句的RODBC(而不是)。下面是我的示例代码。 sqlSave(myconn,mydf,tablename=“[some_db].[some_schema].[my_table]”,:42S01 2714[Microsoft][SQL Server的ODBC驱动程序17][SQL Server]数据库中已有一个名为'my_table'的对象。[

  • 如何获取多个列表并将它们作为不同的列放在python数据框架中?我尝试了这个解决方案,但遇到了一些麻烦。 尝试1: 有三个列表,将它们压缩在一起,并使用 只生成一列 尝试2: 产生一行乘三列(如上所述)或者如果我转置它是三行和一列 如何通过3列(三个列表)数据帧获得100行(每个独立列表的长度)?

  • 本文向大家介绍将参数放入MySQL IN()后,按降序对列进行排序?,包括了将参数放入MySQL IN()后,按降序对列进行排序?的使用技巧和注意事项,需要的朋友参考一下 为此,将方法与DESC一起使用。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 以下是在MySQL中放置参数后按降序对列进行排序的查询- 输出结果

  • 问题内容: 在我的Java应用程序中,用户可以指定如何从一系列元数据字段中命名其文件。即 然后,我的代码解析这些字段,并相应地重命名文件。但我希望用户能够使用“表达式语言”,以便他们能够说出类似以下内容: 使用,比较长度和大小写等。 我不想从头开始编写此代码,有什么可以为我提供这些代码的插件吗? 编辑:我认为我收到了一些好评,但我的知识让我失望。让我们简化我希望用户能够写的问题 $ if(%dis