我想获取数据库中符合正则表达式条件的所有行。该变量应以“ 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]")]
,我得到了预期的结果,因为实际上有许多行可以满足该正则表达式。我做错什么了吗?
答案 0 :(得分:0)
暂时,REGEXP
运算符尚未添加到RSQLITE
,请参阅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%') ")