2013-05-06 8 views
10

Vorrei limitare la mia query per mostrare solo le righe in cui un determinato campo non è vuoto. Ho trovato this thread dove qualcuno ha posto la stessa domanda e gli è stato detto di usare IS NOT NULL. Ho provato, ma sto ancora ricevendo le righe dove il campo è vuoto.SQL/MySQL NOT NULL contro NOT EMPTY

Qual è il modo corretto per farlo? Null è la stessa cosa di Empty in SQL/MySQL?

La mia domanda, se siete interessati è: SELECT * FROM records WHERE (party_zip='49080' OR party_zip='49078' OR party_zip='49284') AND partyfn IS NOT NULL

+0

puoi pubblicare alcuni dati di esempio –

+0

Purtroppo non posso pubblicare i dati reali dalle mie tabelle in quanto contiene informazioni sensibili. Puoi scrivere alcuni semplicemente con le 2 righe, anche se ti piacerebbe testare. – cream

+3

Dai un'occhiata a questa domanda: http://stackoverflow.com/questions/1869264/mysql-select-where-column-not-empty – joakaune

risposta

7

Quando si confrontano un valore NULL, il risultato in molti casi diventa NULL e loro abbienti lo stesso risultato 0 (il valore FALSE in MySQL) all'interno di WHERE e HAVING.

Nell'esempio fornito, non è necessario includere IS NOT NULL. Invece semplicemente usa party_zip IN ('49080', '49078', '49284'). NULL non può essere 49080, 49078, 49284 o qualsiasi altro numero o stringa.

Quello che devi pensare, però, è quando controlli valori vuoti. !party_zip non restituirà TRUE/1 se il valore è NULL. Invece usa OR columns IS NULL o !COALESCE(party_zip, 0)

22

ho ottenuto utilizzando AND (partyfn IS NOT NULL AND partyfn != '')