在 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 '\'")
我有一个数据框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 '\'")