Kullandığım bir cevap benim için zaten çok iyi çalışıyor, burada görmedim (bu soru çok eski, o zaman işe yaramamış olabilir) aslında
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
> ''
Değerin null olup olmadığını ve değerin yalnızca boşluk veya boşluk olmadığını kontrol edecek kısma dikkat edin.
Temel olarak, alanın içinde boşluk dışında bir şey varsa veya NULL
bu doğrudur. Ayrıca süper kısa, bu yüzden yazmak kolaydır ve COALESCE()
ve IFNULL()
işlevleri üzerinde başka bir artı , bu dizin dostu olmasıdır, çünkü bir alandaki bir işlevin çıktısını herhangi bir şeyle karşılaştırmazsınız.
Test senaryoları:
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
GÜNCELLEME Beklemediğim bir uyarı var, ancak sıfır veya altındaki sayısal değerler boş bir dizeden daha büyük değil , bu nedenle sıfır veya negatif olabilecek sayılarla uğraşıyorsanız, bunu YAPMAYIN , beni çok yakın zamanda ısırdı ve hata ayıklamak çok zordu :(
Dizeleri (char, varchar, text, vb.) Kullanıyorsanız, bu mükemmel olacak, sadece sayılara dikkat edin.
phone2
içinde bir şey var " diye açıklayabilir misin ? İnsanlar Şunu olmadığına dair tahminler alıyorphone2
IS DEĞİL NULL, boşluk, vb münhasıran, boş değil değil