जहां खाली है SQLite का चयन करें


125

SQLite में, मैं कैसे रिकॉर्ड कर सकता हूँ जहाँ some_column खाली है?
रिक्त को NULL और "" दोनों के रूप में गिना जाता है।


8
यदि आप प्रश्नों को प्रश्नों के रूप में उद्धृत करते हैं तो यह मदद करता है। हमें क्या जवाब देना चाहिए?
जावद छिपकली

जवाबों:


288

इसके कई तरीके हैं, जैसे:

where some_column is null or some_column = ''

या

where ifnull(some_column, '') = ''

या

where coalesce(some_column, '') = ''

का

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

प्रत्येक समाधान के क्या फायदे हैं?
पचेरियर

1
@ स्पेसर: प्रदर्शन में कुछ अंतर हो सकता है, लेकिन इसके अलावा यह सिर्फ स्टाइल की बात है।
गुफ्फा

3
@ Guffa मेरा मतलब है कि प्रदर्शन .. यह डेटाबेस है ना? dbs में अनुकूलन महत्वपूर्ण है। एक छोटे से प्रदर्शन लाभ है बहुत
Pacerier

4
लंबाई (some_column) से बचा जाना चाहिए, क्योंकि इससे मक्खी की लंबाई की गणना की जा सकती है - AFAIK करंट SQLite टेक्स्ट एफिनिटी वाले कॉलम के लिए करता है। इसके अलावा, आप आशावादी की दया पर हैं - हालांकि मैं उनसे समान होने की उम्मीद करूंगा। आप EXPLAIN का उपयोग करके इसे सत्यापित कर सकते हैं।
पीटरचेन

@peterchen: हां, यह इस बात पर निर्भर करता है कि अनुकूलक क्या करता है। मैंने lengthउदाहरण को शामिल किया क्योंकि यह वास्तव में कुछ स्थिति में तेज हो सकता है, क्योंकि संख्याओं की तुलना स्ट्रिंग्स की तुलना में सरल है। यदि उसके लिए प्रदर्शन एक चिंता का विषय है, तो आपको निश्चित रूप से जांच करनी चाहिए कि वह क्या करता है।
गुफा

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.