2010-09-01 18 views
98

En SQLite, ¿cómo puedo seleccionar registros donde some_column está vacío?
Vacío cuenta como NULL y como "".SQLite select where empty?

+7

Ayuda si formula preguntas como preguntas. ¿Qué se supone que debemos responder? – javawizard

Respuesta

240

Hay varias maneras, tales como:

where some_column is null or some_column = '' 

o

where ifnull(some_column, '') = '' 

o

where coalesce(some_column, '') = '' 

de

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

+ 1 para la variedad – MPelletier

+0

¿Cuáles son las ventajas de cada solución? – Pacerier

+1

@Pacerier: Puede haber alguna diferencia en el rendimiento, pero aparte de eso, es solo cuestión de estilo. – Guffa

23

Parece que sólo tiene que hacer: caso

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

prueba:

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

Resultado:

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

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

+1: Consideraría usar 'TRIM (some_column) = ''' too –

1

Tal vez usted quiere decir

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

pero no puedo decirlo ya que realmente no hizo una pregunta.

0

Usted puede hacer esto con lo siguiente:

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

esto le dará el no de filas en las que el valor de columna es nulo o en blanco.

Cuestiones relacionadas