修改-1
我的实际数据库是MSAccess格式,我使用sqlQuery
R中的RODBC
函数导入数据。以下是我正在创建的假数据库,以便我可以提供可重现的示例RSQLite
包。我想用regexp
sqlQuery
功能。
结束 EDIT-1
以下是使用RSQLite
包的模拟数据库和关联查询。 REGEX
(或REGEXP
)函数不起作用,我无法弄清楚原因。
data0 <- read.csv(textConnection(
'ID value
P9W38 97
P9W39 17
P9W40 78
P9W41 7
P9W42_1 38
P9W42 13
P9W43 18
P9W44 76
P9W45 65
P9W46 24
P9W46_1 44
P9W47 8
P9W48 31
P9W49 82
P9W50 52
P9W50_2 55
P9W51 26
P9W52 33
P9W52_2 79
P9W53 67
P9W54 74
P9W55 55'
),sep='')
dbWriteTable(con, "Mydata", data0)
这些有效
dbGetQuery(con, paste0(' select * from Mydata where [ID] like \'P9W38\' '))
dbGetQuery(con, paste0(' select * from Mydata where [ID] like \'P9W42%\' '))
但这些不起作用
dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEX \'P9W(38|40|50)\' '))
dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEX \'P9W(38|40|50)(_1){,1}\' '))
有任何建议吗?
答案 0 :(得分:0)
我认为你的问题在你有REGEX而不是REGEXP的查询中:
http://dev.mysql.com/doc/refman/5.1/en/regexp.html
所以你的代码应该是这样的:
dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEXP \'P9W(38|40|50)\' '))
dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEXP \'P9W(38|40|50)(_1){,1}\' '))
请提供一些反馈,我对数据库不起作用,但我认为这将解决您的问题