SQLite wybierz gdzie jest puste?


Odpowiedzi:


289

Istnieje kilka sposobów, na przykład:

where some_column is null or some_column = ''

lub

where ifnull(some_column, '') = ''

lub

where coalesce(some_column, '') = ''

z

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

Jakie są zalety każdego rozwiązania?
— Pacerier

1
@Pacerier: Mogą występować pewne różnice w wydajności, ale poza tym to tylko kwestia stylu.
— Guffa

3
@Guffa Mam na myśli oczywiście wydajność .. To jest baza danych, prawda? optymalizacja jest ważna w dbs. zysk trochę wydajność jest dużo
— Pacerier

4
length (some_column) należy unikać, ponieważ może to obliczyć długość w locie - AFAIK obecny SQLite robi to dla kolumn z powinowactwem do tekstu. Poza tym jesteś na łasce optymalizatora - chociaż spodziewałbym się, że będą identyczne. Możesz to sprawdzić za pomocą EXPLAIN.
— peterchen

@peterchen: Tak, to zależy od tego, co zrobi optymalizator. Podałem lengthprzykład, ponieważ w niektórych sytuacjach może to być szybsze, ponieważ porównywanie liczb jest prostsze niż porównywanie łańcuchów. Jeśli zależy Ci na wydajności, powinieneś oczywiście sprawdzić, co robi.
— Guffa,

27

Wygląda na to, że możesz po prostu zrobić:

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

Przypadek testowy:

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

Wynik:

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

id        
----------
1         
2         
5    

1

Może masz na myśli

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

ale nie mogę powiedzieć, ponieważ tak naprawdę nie zadałeś pytania.


0

Możesz to zrobić w następujący sposób:

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

To da ci liczbę wierszy, w których wartość kolumny jest pusta lub pusta.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.