2010-09-01 2 views

ответ

240

Есть несколько способов, как:

where some_column is null or some_column = '' 

или

where ifnull(some_column, '') = '' 

или

where coalesce(some_column, '') = '' 

из

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

+ 1 для разнообразия – MPelletier

+0

В чем преимущества каждого решения? – Pacerier

+1

@Pacerier: В производительности может быть какая-то разница, но кроме этого это просто вопрос стиля. – Guffa

23

Похоже, что вы можете просто сделать:

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  
+4

+1: Я бы подумал об использовании 'TRIM (some_column) = ''' слишком –

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

Это даст вам не строк, где значение столбца равно нулю или пусто.