Відповідь, яку я використовую, працює для мене досить добре, що я вже не бачив тут (це питання дуже старе, тому воно, можливо, не спрацювало тоді) насправді
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
Зауважте > ''
частину, яка перевірить, чи значення не є нульовим, і якщо значення не є просто пробілом чи порожнім.
В основному, якщо в полі є щось інше, ніж пробіл, або NULL
це правда. Це також дуже коротко, тому легко писати та ще один плюс над COALESCE()
іIFNULL()
функціями є те, що це індексує, оскільки ви не порівнюєте вихід функції з поля ні з чим.
Тестові приклади:
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
ОНОВЛЕННЯ Існує застереження до цього, якого я не очікував, але числові значення, що дорівнюють нулю або нижче, не перевищують порожній рядок, тому якщо ви маєте справу з числами, які можуть бути нульовими або негативними, то НЕ робіть цього , це мене покусало зовсім недавно і було дуже важко налагоджувати :(
Якщо ви використовуєте рядки (char, varchar, text тощо), то це буде цілком добре, просто будьте обережні з числовими цифрами.
phone2
щось має в ньому?" Люди гадають, чи маєте ви на увазіphone2
НЕ НУЛЬНИЙ, не порожній, це не виключно пробіл та інше