SQL Select 在 R 中使用 sqldf 包查询不工作
SQL Select query not working using sqldf package in R
这是我的数据框头部的样子
head(d7)
Jurisdiction %_TOT2030 %_ENR2030 %_RE2030 %_OFF2030 %_OTH2030 %_HH2030
1 Baltimore City 7.6667589 0 7.773109 7.5530587 7.6866764 4.783365
2 Baltimore City 8.0038573 0 8.193277 7.9555175 7.9553903 6.583851
3 Baltimore City 35.4085603 0 37.037037 35.3146853 35.3608247 20.008643
4 Baltimore City 0.5071851 0 1.030928 0.4424779 0.6410256 28.629032
5 Baltimore City 7.5310559 0 8.108108 7.4790458 7.4634938 9.679767
6 Baltimore City 11.8785976 0 12.043011 11.8718593 11.8460613 9.690331
数据框的数据类型如下
海峡(d7)
'data.frame': 1588 obs. of 7 variables:
$ Jurisdiction: Factor w/ 59 levels "Accomack County",..: 7 7 7 7 7 7 7 7 7 7 ...
$ %_TOT2030 : num 7.667 8.004 35.409 0.507 7.531 ...
$ %_ENR2030 : num 0 0 0 0 0 0 0 0 0 0 ...
$ %_RE2030 : num 7.77 8.19 37.04 1.03 8.11 ...
$ %_OFF2030 : num 7.553 7.956 35.315 0.442 7.479 ...
$ %_OTH2030 : num 7.687 7.955 35.361 0.641 7.463 ...
$ %_HH2030 : num 4.78 6.58 20.01 28.63 9.68 ...
当我 运行 下面的查询时,它只是返回 d7 而没有做任何更改,我不明白为什么!
d8 <- sqldf("Select * from d7 where '%_TOT2030' > 10")
在 SQL 查询中,您可以使用双引号将包含空格或特殊字符的字段名称括起来,而单引号表示文本。
此处将文本 '%_TOT2030'
与 '10'
进行比较。这始终是 TRUE
,因此您可以从 table.
中获取所有行
要比较字段 %_TOT2030
的值,您必须编写 "%_TOT2030" > 10
,因此我建议您像这样简单地反转所有单引号和双引号:
d8 <- sqldf('Select * from d7 where "%_TOT2030" > 10')
在 SQLite sqldf
的默认方言中,您还可以使用方括号括起 table/column 别名以转义空格、特殊字符和保留字。
d8 <- sqldf('Select * from d7 where [%_TOT2030] > 10')
这是我的数据框头部的样子
head(d7)
Jurisdiction %_TOT2030 %_ENR2030 %_RE2030 %_OFF2030 %_OTH2030 %_HH2030
1 Baltimore City 7.6667589 0 7.773109 7.5530587 7.6866764 4.783365
2 Baltimore City 8.0038573 0 8.193277 7.9555175 7.9553903 6.583851
3 Baltimore City 35.4085603 0 37.037037 35.3146853 35.3608247 20.008643
4 Baltimore City 0.5071851 0 1.030928 0.4424779 0.6410256 28.629032
5 Baltimore City 7.5310559 0 8.108108 7.4790458 7.4634938 9.679767
6 Baltimore City 11.8785976 0 12.043011 11.8718593 11.8460613 9.690331
数据框的数据类型如下 海峡(d7)
'data.frame': 1588 obs. of 7 variables:
$ Jurisdiction: Factor w/ 59 levels "Accomack County",..: 7 7 7 7 7 7 7 7 7 7 ...
$ %_TOT2030 : num 7.667 8.004 35.409 0.507 7.531 ...
$ %_ENR2030 : num 0 0 0 0 0 0 0 0 0 0 ...
$ %_RE2030 : num 7.77 8.19 37.04 1.03 8.11 ...
$ %_OFF2030 : num 7.553 7.956 35.315 0.442 7.479 ...
$ %_OTH2030 : num 7.687 7.955 35.361 0.641 7.463 ...
$ %_HH2030 : num 4.78 6.58 20.01 28.63 9.68 ...
当我 运行 下面的查询时,它只是返回 d7 而没有做任何更改,我不明白为什么!
d8 <- sqldf("Select * from d7 where '%_TOT2030' > 10")
在 SQL 查询中,您可以使用双引号将包含空格或特殊字符的字段名称括起来,而单引号表示文本。
此处将文本 '%_TOT2030'
与 '10'
进行比较。这始终是 TRUE
,因此您可以从 table.
要比较字段 %_TOT2030
的值,您必须编写 "%_TOT2030" > 10
,因此我建议您像这样简单地反转所有单引号和双引号:
d8 <- sqldf('Select * from d7 where "%_TOT2030" > 10')
在 SQLite sqldf
的默认方言中,您还可以使用方括号括起 table/column 别名以转义空格、特殊字符和保留字。
d8 <- sqldf('Select * from d7 where [%_TOT2030] > 10')