Source
it_skills_ua | Розбираємо різницю в SQL між конструкціями !=, NOT, NOT IN🔹 Про !=!= ц...
1 840 Views/Reach
2025-06-22 10:56
Message №952
Розбираємо різницю в SQL між конструкціями !=, NOT, NOT IN🔹 Про !=!= це базовий спосіб порівняння в SQL, коли треба знайти щось, що не дорівнює певному значенню. Наприклад, усіх, хто не має певного тарифу або знижки. Але важливо знати, якщо у стовпчику є значення NULL, то будь-яке порівняння з ним буде невизначеним, і такий рядок просто не потрапить у результат. Тобто дані втрачаються. Це один із найпоширеніших підводних каменів у SQL: думаєш, що виключаєш значення, а насправді ще й пропускаєш всі NULL значення.🔹 Про NOTNOT це просто інверсія умови, тобто це зворотня дія для якоїсь умови. Хоча технічно це зручно, на практиці NOT часто ускладнює читання запиту. Наприклад, NOT (a != b) виглядає складніше, ніж просто a = b. Але є кейси, де NOT це зручно, коли потрібно інвертувати одразу кілька умов одночасно. Уяви, що треба виключити комбінацію з кількох значень, отут NOT справді зручний. І ще нюанс: якщо в умовах є NULL, і ти використовуєш NOT, може бути той самий ефект, що й з !=, результат частково втрачається, якщо не обробити NULL.🔹 Про NOT INNOT IN - виключення зі списку, це зручно, коли треба виключити одразу кілька значень: наприклад, усіх, у кого знижка не 10, 15 або 20. Але є дуже критична особливість, якщо в цьому списку значень або в колонці є хоча б один NULL, результат буде пустим - поверенеться 0 рядків (це називається пустий набір даних). Щоб NOT IN працював надійно, потрібно завжди враховувати NULL або очищати список, або підміняти NULL на значення за замовчуванням (наприклад, 0). NOT IN також часто використовують у зв'язці з підзапитами, коли треба виключити все, що вже є в іншому наборі даних. Але там теж треба пильнувати будь-який NULL у підзапиті, бо можна зламати весь результат.Більш детально у відео, максимальна якість на ютуб каналі#sql_code