在 sqldf r 中匹配下划线字符

matching underscore character in sqldf r

我有一个数据框df,

df = data.frame(name=c("jean", "lucie", "marie", "alain", "dupont", "stephane"),
  address=c("A3_Lyon" ,"paris_A1", "Paris_A2_Test", "Par1", "Paris_A2de2_Lyon",   'Lille_Aide_'))

我想选择包含 A2 的地址,如何用 sqldf 做到这一点?这条指令给我错误的结果:

sqldf("select * from df where address like '%_A2_%'")
##     name          address
## 1  marie    Paris_A2_Test
## 2 dupont Paris_A2de2_Lyon

我的正确答案是:

##     name          address
## 1  marie    Paris_A2_Test

我该怎么做

对于大多数 SQL 方言,_ 匹配 LIKE 语句中的任何给定单个字符。使用 sqldf (SQLite) 的默认 SQL 驱动程序,您可以将 like 语句替换为 glob,它使用 * 和 ?分别代替 % 和 _ 或尝试指定转义:

 sqldf("select * from df where address glob '*_A2_*'")

 sqldf("select * from df where address like '%\_A2\_%' ESCAPE '\'")