SQLite选择何处为空?

SQLite选择何处为空?,sql,sqlite,select,isnullorempty,Sql,Sqlite,Select,Isnullorempty,在SQLite中,如何选择某些列为空的记录? 空同时计为NULL和“.”看起来您只需执行以下操作: SELECT * FROM your_table WHERE some_column IS NULL OR some_column = ''; 测试用例: CREATE TABLE your_table (id int, some_column varchar(10)); INSERT INTO your_table VALUES (1, NULL); INSERT INTO your_tab

在SQLite中,如何选择某些列为空的记录?

空同时计为NULL和“.”

看起来您只需执行以下操作:

SELECT * FROM your_table WHERE some_column IS NULL OR some_column = '';
测试用例:

CREATE TABLE your_table (id int, some_column varchar(10));

INSERT INTO your_table VALUES (1, NULL);
INSERT INTO your_table VALUES (2, '');
INSERT INTO your_table VALUES (3, 'test');
INSERT INTO your_table VALUES (4, 'another test');
INSERT INTO your_table VALUES (5, NULL);
结果:

SELECT id FROM your_table WHERE some_column IS NULL OR some_column = '';

id        
----------
1         
2         
5    
也许你是说

select x
from some_table
where some_column is null or some_column = ''

但我不知道,因为你并没有真正提出问题。

有几种方法,比如:

where some_column is null or some_column = ''


您可以通过以下方式执行此操作:

int counter = 0;
String sql = "SELECT projectName,Owner " + "FROM Project WHERE Owner= ?";
PreparedStatement prep = conn.prepareStatement(sql);
prep.setString(1, "");
ResultSet rs = prep.executeQuery();
while (rs.next()) {
    counter++;
}
System.out.println(counter);

这将为您提供列值为null或空白的行数。

每种解决方案的优点是什么?@Pacerier:性能上可能有一些差异,但除此之外,这只是风格问题。@Guffa我指的是性能。。这是数据库,不是吗?优化在dbs中非常重要。应该避免在长时间内(某些_列)获得一点性能增益,因为这可能会动态计算长度-当前SQLite对具有文本关联的列所做的AFAIK。除此之外,您还需要受优化器的支配——尽管我希望它们是相同的。你可以用EXPLAIN来验证这一点。@peterchen:是的,这取决于乐观主义者做了什么。我包括了
length
示例,因为在某些情况下它可能会更快,因为比较数字比比较字符串更简单。如果这方面的表现令人担忧,那么你当然应该检查它的功能。如果你将问题表述为问题,这会有所帮助。我们应该回答什么?
where coalesce(some_column, '') = ''
where ifnull(length(some_column), 0) = 0
int counter = 0;
String sql = "SELECT projectName,Owner " + "FROM Project WHERE Owner= ?";
PreparedStatement prep = conn.prepareStatement(sql);
prep.setString(1, "");
ResultSet rs = prep.executeQuery();
while (rs.next()) {
    counter++;
}
System.out.println(counter);