Sebuah jawaban yang telah saya gunakan yang telah bekerja dengan baik untuk saya yang belum saya lihat di sini (pertanyaan ini sudah sangat lama, jadi mungkin belum berfungsi) sebenarnya
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
Perhatikan > ''
bagian tersebut, yang akan memeriksa apakah nilainya tidak nol, dan jika nilainya bukan hanya spasi kosong atau kosong.
Pada dasarnya, jika bidang memiliki sesuatu di dalamnya selain spasi atau NULL
, itu benar. Ini juga sangat pendek, jadi mudah untuk menulis, dan nilai tambah lainnya di atas COALESCE()
danIFNULL()
fungsinya adalah ini ramah indeks, karena Anda tidak membandingkan output dari suatu fungsi pada bidang dengan apa pun.
Kasus uji:
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
UPDATE Ada peringatan untuk ini yang saya tidak harapkan, tetapi nilai numerik yang nol atau di bawah tidak lebih besar dari string kosong, jadi jika Anda berurusan dengan angka yang bisa nol atau negatif maka JANGAN LAKUKAN INI , itu menggigit saya baru-baru ini dan sangat sulit untuk men-debug :(
Jika Anda menggunakan string (char, varchar, teks, dll.), Maka ini akan baik-baik saja, hati-hati dengan angka.
phone2
ada sesuatu di dalamnya?" Orang yang mengambil tebakan, apakah Anda maksudphone2
IS NOT NULL, tidak kosong, tidak eksklusif spasi, dll