NULL зустрічається в базах даних, коді, таблицях і іноді в повідомленнях інтерфейсів. Новачок часто думає, що це помилка, нуль або порожня клітинка, але це різні речі. Ця стаття допоможе швидко зрозуміти, що означає NULL, чому звичайне порівняння з ним не працює і як не зламати запит. Розберемо: NULL, 0, порожній рядок, None, IS NULL.
Якщо ви паралельно розвиваєте профіль і тестуєте попит на контент, один із варіантів просування — сервіс накрутки соцмереж Фокси.
NULL – це спеціальне значення в базах даних і програмуванні, що означає «даних нема» або «значення невідоме» – це не нуль і не порожній рядок.
Найпростіше пояснити NULL на прикладі анкети. Поле «вік» не заповнене – це не 0 років і не пустий рядок. Це значить: ми не знаємо вік людини.
Що таке значення NULL? Це маркер для ситуації, коли програма або база не отримала інформації. Значення може з’явитися пізніше, але поки що його немає.
У маркетингових вигрузках я частіше бачила NULL в CRM і таблицях лідів: у клієнта був email, але не було телефону. Типова ситуація – замінити порожнє поле текстом «не вказано», але при імпорті в базу це перетворювалося на різні типи значень: NULL, порожній рядок або звичайний текст.
Якщо ви побачили слово Null в інтерфейсі соцмережі, а не в базі, краще дивитись окремий розбір Що означає Null в Інстаграм.
| Тип | Що означає | Приклад |
|---|---|---|
| NULL | Даних нема або значення невідоме | Телефон не вказано |
| 0 | Відоме число нуль | Баланс = 0 гривень |
| “” | Відомий порожній рядок | Ім’я = “” |
Запам’ятати можна так: 0 – це відповідь, порожній рядок – теж відповідь, NULL – відповіді немає. Тому програма обробляє їх по-різному.
В SQL поширена помилка новачка – запит WHERE email = NULL. Він може повернути 0 рядків, навіть якщо в таблиці є записи без email. Правильна перевірка: WHERE email IS NULL, як показано в документації MySQL 8.4.
Для перевірки на NULL використовують тільки IS NULL або IS NOT NULL – знак рівності тут не працює.
Якщо потрібно знайти рядки, де email заповнений, пишуть WHERE email IS NOT NULL. Це не те саме, що email != “”, тому що порожній рядок і NULL в SQL – різні значення.
В SQL вираз NULL = NULL повертає не TRUE, а NULL. Логіка тут тризначна: TRUE, FALSE і UNKNOWN, тобто «невідомо».
Аналогія проста: ви питаєте у двох незнайомців вік, обидва мовчать. Ні про що не можна сказати, що їхній вік однаковий, бо даних немає. Таке поведінка порівнянь описана в документації PostgreSQL.
Якщо плутанина з NULL прийшла з обмежень профілю, проблема може бути не в базі, а в доступі до даних; для цього є окремий матеріал Що бачить людина в обмеженому доступі в Інстаграм.
В Python немає слова NULL у звичному коді. Його роль виконує None – вбудована константа, описана в документації Python. У Python 3.x новачки часто шукають NULL після SQL, але правильна перевірка — value is None.
В JavaScript є два схожих значення: null і undefined. null зазвичай означає навмисну відсутність значення, а undefined – значення ще не присвоїли. Старий баг мови досі лишається: typeof null повертає “object”, про це пише MDN Web Docs.
В Excel порожня клітинка виглядає як NULL, але технічно це не справжній NULL з SQL. При імпорті таблиці порожня клітинка може перетворитися на NULL, порожній рядок або пропуск – залежить від інструмента імпорту.
Якщо Null сплив поруч з публікацією або описом, це вже не SQL-тема: допоможуть розбори Що написати під фото в Інстаграм і Як зробити красиві підписи і шрифти в Інстаграм.
Якщо ви розвиваєте профіль і паралельно розбираєтесь з технічними повідомленнями в інтерфейсі, вам може підійти накрутка підписників Інстаграм онлайн.
| Мова або середовище | Як називається | Особливість |
|---|---|---|
| SQL | NULL | Перевіряється через IS NULL, працює тризначна логіка |
| Python | None | Об’єкт типу NoneType |
| JavaScript | null | typeof null повертає “object” |
| Excel | порожня клітинка | Виглядає як NULL, але при імпорті поводиться інакше |
Якщо помилка пов’язана з медіаконтентом, перевірте правила публікацій: Які фото не можна викладати в Інстаграм. Якщо проблема виникла після чищення профілю, корисні інструкції Як подивитися свою активність в Інстаграм і Як масово видалити публікації в Інстаграм.
COALESCE зручний в звітах: замість порожнього телефону можна показати «не вказано», а замість відсутньої суми – 0, якщо це дозволяє ваша логіка. Головне – не підмінювати невідоме значення нулем там, де нуль змінює сенс даних.
Якщо NULL з’являється разом із зависаннями додатку або важкими даними профілю, варто окремо перевірити Які функції Інстаграм займають найбільше пам’яті. А якщо помилка пов’язана з запитами на доступ до закритого профілю, стане в нагоді розбір Чи варто підтверджувати підписку в Інстаграм?
Ні, NULL – це коректне значення, яке означає відсутність даних. Помилка з’являється не через сам NULL, а через неправильну обробку: наприклад, коли його порівнюють через знак рівності.
В SQL будь-яка арифметика з NULL зазвичай дає NULL: наприклад, 5 + NULL = NULL. Причина проста: якщо одне число невідоме, результат теж невідомий.
Це одна ідея: None в Python – аналог NULL з SQL, але з іншою назвою. В Python None – реальний об’єкт типу NoneType, а в SQL NULL працює як невідоме значення в логіці запитів.
Так висловився Tony Hoare, який ввів null-посилання в ALGOL у 1965 році і пізніше публічно жалкував про це рішення. Фраза стала відомою, бо помилки з відсутніми значеннями десятиліттями ламали програми і коштували компаніям дорого.
Коротко: NULL означає «даних нема», а не 0 і не порожнє. В SQL перевіряйте його через IS NULL, в Python шукайте None, в JavaScript не плутайте null і undefined.