LIKE sqldf 上的内部联接

Posted

技术标签:

【中文标题】LIKE sqldf 上的内部联接【英文标题】:Inner join on LIKE sqldf 【发布时间】:2016-03-23 19:46:21 【问题描述】:

如何使用 R 中的 sqldf 将 LIKE 子句与内部联接一起使用?

代码:

Name <- c("Jack","Jill","Romeo")
Name <- as.data.frame(Name)
FullName <- c("School Jack H", "School Juliet G", "College Jill M", "College Romeo F")
Marks <- c("100","82","54","0")
FullBio <- cbind(FullName, Marks)
FullBio <-as.data.frame(FullBio)

然后当我运行时:

sqldf("select a.*, b.* from Name a join FullBio b on a.Name like '%'+b.[FullName]+'%'") 

返回 0 行。

为什么?请问我的其他选择是什么。很抱歉让你创建了这么多变量来运行我的代码。

【问题讨论】:

嘿,你能提一下你的问题的期望输出吗? @user2923027 不需要使用cbind。只需使用FullBio &lt;- data.frame(FullName, Marks) 就足够了。 【参考方案1】:

SQLite中的字符串连接运算符为||

sqldf("select * from Name join FullBio on FullName like '%' || Name || '%'")

给予:

   Name        FullName Marks
1  Jack   School Jack H   100
2  Jill  College Jill M    54
3 Romeo College Romeo F     0

其中任何一个也可以:

sqldf("select * from Name join FullBio on instr(FullName, Name)")

sqldf("select * from Name join FullBio on like('%' || Name || '%', FullName)")

【讨论】:

它对我不起作用。我在 Macbook 上,我用 shift 键按下“]”旁边的键。我以前试过这个,它没有用。编辑:它奏效了。但是当我使用像 a 和 b 这样的限定符时它不起作用。你知道为什么吗? 它对我有用。复制答案中的代码并将其粘贴到 R 中,以确保您没有打错字。还要通过尝试一个非常简单的查询来确保 sqldf 正常工作:例如 sqldf("select * from BOD")

以上是关于LIKE sqldf 上的内部联接的主要内容,如果未能解决你的问题,请参考以下文章

Access 上的内部联接 SQL

特定列上的SQL内部联接

两个索引上的内部联接的 Big-Oh 性能

内部联接与内部联接(SELECT . FROM)

内部联接和简单联接之间是不是有任何性能差异? [复制]

使用多个内部联接时,与使用单个内部联接时相比,我得到不同的结果