Una risposta che sto usando che ha funzionato abbastanza bene per me che non avevo già visto qui (questa domanda è molto vecchia, quindi potrebbe non aver funzionato allora) è in realtà
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
Notare la > ''
parte, che controllerà se il valore non è null e se il valore non è solo uno spazio o uno spazio.
Fondamentalmente, se il campo contiene qualcosa di diverso dallo spazio bianco o NULL
, è vero. È anche super breve, quindi è facile da scrivere, e un altro vantaggio rispetto alle funzioni COALESCE()
e IFNULL()
è che questo è indice amichevole, poiché non stai confrontando l'output di una funzione su un campo con nulla.
Casi test:
SELECT if(NULL > '','true','false');-- false
SELECT if('' > '','true','false');-- false
SELECT if(' ' > '','true','false');-- false
SELECT if('\n' > '','true','false');-- false
SELECT if('\t' > '','true','false');-- false
SELECT if('Yeet' > '','true','false');-- true
AGGIORNAMENTO C'è un avvertimento che non mi aspettavo, ma i valori numerici che sono zero o inferiori non sono maggiori di una stringa vuota, quindi se hai a che fare con numeri che possono essere zero o negativi, NON FARE QUESTO , mi ha morso molto di recente ed è stato molto difficile eseguire il debug :(
Se stai usando stringhe (char, varchar, text, ecc.), Allora andrà benissimo, stai attento con i numeri.
phone2
contiene qualcosa?" Le persone stanno ipotizzando se intendi chephone2
NON È NULL, non è vuoto, non è esclusivamente spazi bianchi, ecc.