SQLite pilih di mana kosong?


125

Di SQLite, bagaimana saya bisa memilih catatan di mana some_column kosong?
Kosong dihitung sebagai NULL dan "".


8
Ini membantu jika Anda menyusun pertanyaan sebagai pertanyaan. Apa yang harus kami jawab?
javawizard

Jawaban:


288

Ada beberapa cara, seperti:

where some_column is null or some_column = ''

atau

where ifnull(some_column, '') = ''

atau

where coalesce(some_column, '') = ''

dari

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

Apa keuntungan dari setiap solusi?
Pacerier

1
@Pacerier: Mungkin ada beberapa perbedaan dalam performa, tetapi selain itu, ini hanya masalah gaya.
Guffa

3
@ Guffa Maksud saya tentu saja kinerjanya .. Ini database bukan? pengoptimalan penting dalam dbs. sedikit peningkatan kinerja banyak
Pacerier

4
panjang (some_column) harus dihindari, karena ini dapat menghitung panjang dengan cepat - SQLite saat ini AFAIK melakukannya untuk kolom dengan afinitas teks. Selain itu, Anda bergantung pada belas kasihan pengoptimal - meskipun saya berharap mereka identik. Anda dapat memverifikasi itu dengan menggunakan JELASKAN.
peterchen

@peterchen: Ya, itu tergantung pada apa yang dilakukan pengoptimal. Saya menyertakan lengthcontoh karena mungkin sebenarnya lebih cepat dalam beberapa situasi, karena membandingkan angka lebih sederhana daripada membandingkan string. Jika kinerja untuk itu menjadi perhatian, Anda tentu saja harus memeriksa apa yang dilakukannya.
Guffa

27

Sepertinya Anda cukup melakukan:

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

Kasus cobaan:

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

Hasil:

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

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

1

Mungkin maksudmu

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

tapi saya tidak tahu karena Anda tidak benar-benar mengajukan pertanyaan.


0

Anda dapat melakukan ini dengan yang berikut:

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

Ini akan memberi Anda no baris di mana nilai kolom adalah null atau kosong.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.