4 min read
•Question 19 of 29easyHow do you handle NULL values?
Working with NULL in SQL.
What You'll Learn
- NULL behavior
- Checking for NULL
- NULL functions
NULL Behavior
NULL represents missing/unknown data. NULL is not equal to anything, including NULL.
query.sqlSQL
-- These return no rows!
SELECT * FROM users WHERE phone = NULL; -- Wrong
SELECT * FROM users WHERE phone != NULL; -- Wrong
-- Correct way
SELECT * FROM users WHERE phone IS NULL;
SELECT * FROM users WHERE phone IS NOT NULL;NULL in Comparisons
query.sqlSQL
-- NULL in arithmetic = NULL
SELECT 100 + NULL; -- NULL
-- NULL in string concatenation = NULL
SELECT 'Hello ' || NULL; -- NULL (in most databases)
-- NULL in conditions
SELECT * FROM products WHERE price > 50;
-- Rows where price IS NULL are NOT includedCOALESCE
Returns first non-NULL value.
query.sqlSQL
SELECT
name,
COALESCE(phone, mobile, email, 'No contact') AS contact
FROM users;
-- Default value
SELECT name, COALESCE(nickname, name) AS display_name
FROM users;NULLIF
Returns NULL if two values are equal.
query.sqlSQL
-- Avoid division by zero
SELECT total / NULLIF(count, 0) AS average
FROM stats;
-- Convert empty string to NULL
SELECT NULLIF(name, '') AS name FROM users;IFNULL / ISNULL / NVL
Database-specific NULL replacement.
query.sqlSQL
-- MySQL
SELECT IFNULL(phone, 'N/A') FROM users;
-- SQL Server
SELECT ISNULL(phone, 'N/A') FROM users;
-- Oracle
SELECT NVL(phone, 'N/A') FROM users;NULL-safe Comparison
query.sqlSQL
-- MySQL: <=> operator
SELECT * FROM t1, t2 WHERE t1.value <=> t2.value;
-- Standard SQL
SELECT * FROM t1, t2
WHERE t1.value = t2.value OR (t1.value IS NULL AND t2.value IS NULL);