我想要获取数据库中满足正则表达式条件的所有行。变量应以"J12“、"J13”、"J14“或"J15”开头。这是我的尝试:
Data <- dbGetQuery(db,
"SELECT * FROM 'XXX.XXXX.XXX'
WHERE TYPE = 'xyz' AND [xyz_DIAG] LIKE '^J1[2-5]' ")
然后返回一个0行的data.frame。当我发送查询时
Data <- dbGetQuery(db,
"SELECT * FROM 'XXX.XXXX.XXX'
WHERE TYPE = 'xyz'")
我得到了一个非常大的data.frame,然后我调用Data %>% setDT %>% .[str_detect(xyz_DIAG, "^J1[2-5]")]
并得到了预期的结果,因为实际上有很多行满足这个正则表达式。我做错什么了吗?
发布于 2019-03-14 20:54:27
RSQLITE
暂未增加REGEXP
运算符,请参见this pull request。
因此,您需要“解开”正则表达式并使用ORed LIKE
Data <- dbGetQuery(db,
"SELECT * FROM 'XXX.XXXX.XXX'
WHERE TYPE = 'xyz' AND ([xyz_DIAG] LIKE 'J12%' OR [xyz_DIAG] LIKE 'J13%' OR [xyz_DIAG] LIKE 'J14%' OR [xyz_DIAG] LIKE 'J15%') ")
https://stackoverflow.com/questions/55160878
复制相似问题