SQLite select nerede boş?


125

SQLite'da, bazı_sütun boş olan kayıtları nasıl seçebilirim?
Boş, hem NULL hem de "" olarak sayılır.


8
Soruları soru olarak ifade etmen yardımcı olur. Ne cevap vermemiz gerekiyor?
— javawizard

Yanıtlar:


288

Aşağıdakiler gibi birkaç yol vardır:

where some_column is null or some_column = ''

veya

where ifnull(some_column, '') = ''

veya

where coalesce(some_column, '') = ''

nın-nin

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

Her çözümün avantajları nelerdir?
— Pacerier

1
@Pacerier: Performansta bazı farklılıklar olabilir, ancak bunun dışında bu sadece bir stil meselesi.
— Guffa

3
@Guffa Tabii ki performans .. Bu veritabanı değil mi? dbs'de optimizasyon önemlidir. biraz performans kazancı çok fazla
— Pacerier

4
uzunluktan (bir_sütun) kaçınılmalıdır, çünkü bu işlem anında uzunluğu hesaplayabilir - AFAIK mevcut SQLite, metin yakınlığına sahip sütunlar için yapar. Bunun dışında, optimizasyon uzmanının insafına kalıyorsunuz - ancak ben bunların aynı olmasını beklerdim. EXPLAIN kullanarak bunu doğrulayabilirsiniz.
— peterchen

@peterchen: Evet, iyileştiricinin ne yaptığına bağlı. lengthÖrneği dahil ettim çünkü bazı durumlarda aslında daha hızlı olabilir, çünkü sayıları karşılaştırmak dizeleri karşılaştırmaktan daha kolaydır. Bunun performansı önemliyse, elbette ne işe yaradığını kontrol etmelisiniz.
— Guffa

27

Yapabileceğiniz gibi görünüyor:

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

Test durumu:

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

Sonuç:

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

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

1

Belki demek istiyorsun

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

ama gerçekten bir soru sormadığın için söyleyemem.


0

Bunu şu şekilde yapabilirsiniz:

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

Bu size sütun değerinin boş veya boş olduğu satırların sayısını verecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.