2010-09-01 7 views
98

Dans SQLite, comment puis-je sélectionner des enregistrements où some_column est vide? Vide compte à la fois comme NULL et "".SQLite sélectionnez où vide?

+7

Il est utile de formuler des questions sous forme de questions. À quoi sommes-nous censés répondre? – javawizard

Répondre

240

Il y a plusieurs façons, comme:

where some_column is null or some_column = '' 

ou

where ifnull(some_column, '') = '' 

ou

where coalesce(some_column, '') = '' 

de

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

+ 1 pour la variété – MPelletier

+0

Quels sont les avantages de chaque solution? – Pacerier

+1

@Pacerier: Il peut y avoir une différence de performance, mais à part ça, c'est juste une question de style. – Guffa

23

Il semble que vous pouvez simplement faire:

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

Cas de test:

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

Résultat:

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

id   
---------- 
1   
2   
5  
+4

+1: J'envisagerais d'utiliser 'TRIM (some_column) = ''' aussi –

1

Peut-être vous dire

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

mais je ne peux pas le dire puisque vous n'avez pas vraiment posé de question.

0

Vous pouvez le faire avec les éléments suivants:

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

Cela vous donnera le pas des lignes où la valeur de la colonne est nulle ou vide.

Questions connexes