SQLite选择何处为空?
在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
空同时计为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);