我在R中读取了sql表,代码如下
library(RSQLite)
setwd("C:/Users/Cat/Downloads")
drv = dbDriver("SQLite")
# Use the driver to connect to a particular sqlite database file
con = dbConnect(drv, "cartype")
dbListTables(con)
在表Sale中有一些名为ID和credit的列。缺少一些功劳,我可以使用以下代码选择它们。
wow = dbGetQuery(con, 'SELECT DISTINCT ID FROM Sale WHERE
credit IS NOT \"NA\";')
问题是如何选择ID为NA的ID?我尝试了代码
wow = dbGetQuery(con, 'SELECT DISTINCT ID FROM Sale WHERE
credit IS \"NA\";')
OR
wow = dbGetQuery(con, 'SELECT DISTINCT ID FROM Sale WHERE
credit == \"NA\";')
代码有效,但结果不正确,结果与条件匹配的结果为0,而NA信用额应超过100个。
任何人都可以帮助我,并告诉我如何获得NA学分的ID? 谢谢!
答案 0 :(得分:1)
我认为你正在反对对错误存储在数据库中的错误态度。这些通常存储为NULL而不是NA。
您的第一个语句有效,因为它将某个类型的列(例如date,int,varchar)与字符串(“NA”)进行比较,这将排除NULL,因为字符串比较(无论是隐式还是显式)将始终排除由于所有日期都与“NA”不同,因此会返回所有未丢失的记录。
你的第二个和第三个语句返回0记录的原因是因为它再次进行字符串比较,这将排除NULL并且也找不到匹配。
对于SQLite,有一个关于如何处理NULL的很好的页面,可能会帮助您了解有关此主题的更多详细信息:http://sqlite.org/nulls.html