SQLite выберите где пустой?


126

Как в SQLite выбрать записи, в которых some_column пуст?
Пустой считается как NULL, так и "".


8
Это поможет, если вы сформулируете вопросы как вопросы. Что мы должны ответить?
— javawizard

Ответы:


289

Есть несколько способов, например:

where some_column is null or some_column = ''

или

where ifnull(some_column, '') = ''

или

where coalesce(some_column, '') = ''

из

where ifnull(length(some_column), 0) = 0

Какие преимущества у каждого решения?
— Pacerier

1
@Pacerier: Может быть разница в производительности, но в остальном это просто вопрос стиля.
— Guffa

3
@Guffa Я имею в виду, конечно, производительность .. Это ведь база данных? оптимизация важна в dbs. небольшой прирост производительности - это много
— Pacerier

4
length (some_column) следует избегать, так как это может вычислить длину на лету - AFAIK текущий SQLite делает для столбцов с текстовым сходством. В остальном вы зависите от оптимизатора, хотя я ожидал, что они будут идентичными. Вы можете проверить это с помощью EXPLAIN.
— peterchen

@peterchen: Да, это зависит от того, что делает оптимизатор. Я включил этот lengthпример, потому что в некоторых ситуациях он может быть быстрее, поскольку сравнивать числа проще, чем сравнивать строки. Если производительность для этого вызывает беспокойство, вы, конечно, должны проверить, что он делает.
— Guffa

27

Похоже, вы можете просто сделать:

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    

1

Может ты имеешь в виду

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

но я не могу сказать, так как вы действительно не задавали вопрос.


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);

Это даст вам количество строк, в которых значение столбца пустое или пустое.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.