dbGetQuery中的正则表达式不起作用

时间:2019-03-14 11:04:47

标签: sql r regex

我想获取数据库中符合正则表达式条件的所有行。该变量应以“ 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]")],我得到了预期的结果,因为实际上有许多行可以满足该正则表达式。我做错什么了吗?

1 个答案:

答案 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%') ")