回答

收藏

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

技术问答 技术问答 226 人阅读 | 0 人回复 | 2023-09-14

我看过’将R变量传递给多个项目RODBC的sqlQuery但似乎不能让它正常工作。我正在尝试。sqlQuery()在SQL Server 2008
& p& ]2 B8 |- v; S7 ~+ J! wR在数据库上执行R操作。我试图根据行号从大型数据库中获取样本。首先,我创建了一个随机数列表:
" Q% k" X; ]' l. B6 l: BsampRowNum 然后,我试着在查询中使用以下数字:
) V' c1 m7 L" C2 [  m; Qquery1 我只是从db其中row_id等于第一个数字sampRowNum。有什么建议?6 i% N+ ~5 O9 ^. s; a
                                                                9 P: z. d6 Q/ M( B7 U  T
    解决方案:                                                               
! w5 Z. {$ M$ ?                                                                您没有paste一起正确查询。
$ L% U! N5 R, M9 i/ @9 V若单独运行paste句子,会看到5000的向量长度,所以sqlQuery只执行第一个元素,对应第一个元素samRowNum。8 D" l% f) G+ e
你想做的是更多这样的事情:8 d3 B- V2 j% i0 [
paste("select * FROM db where row_id in (",    paste(sampRowNum,collapse = ","),")",sep="")就像一个额外的注释(而且,因为我必须做很多这样的事情)…),使用IN具有字符串的子句结构sql查询有点麻烦,因为你必须使用所有的单引号:
: `: v, B4 B* [vec 如果你经常这样做,你最终会写一个小函数来粘贴你的字符向量。
# L  I* x4 x: y9 C1 {4 U和往常一样,如果你在处理用户输入(例如,Web在应用程序中)SQL由于字符串操作SQL注射攻击效果不好。在我的具体情况下,这不是什么大问题,但一般来说,如果你不太控制输入值,人们会更喜欢参数查询。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则