A couple of fun things about NULL in SQL

Senior Data Engineer • Contractor / Freelancer • GCP & AWS Certified
Search for a command to run...

Senior Data Engineer • Contractor / Freelancer • GCP & AWS Certified
No comments yet. Be the first to comment.
Short, practical posts on SQL and BigQuery — from core language features to advanced query patterns. A reference for data practitioners at every level.
What are the differences between FLOAT (FLOAT64) vs NUMERIC data types in BigQuery SQL and when to use each? While they both can express decimals, they have some important differences in terms of precision and performance. 🔷 FLOAT (FLOAT64): a doubl...
Here's a useful Dataform concept: pre_operations and post_operations. As the name implies, these represent a set of actions that run before and after the main operation (table, view, or SQL operations

BigQuery has always been a SQL engine for tabular data. Object tables add an interesting twist to that. Instead of rows containing values, an object table gives you one row per file — pointing at da

Query your data lake with warehouse-grade security and performance — without moving a single file.

Ever run a heavy BigQuery SQL query, processed gigabytes of data — and then accidentally closed the tab or forgot to save the results? 😬 Don't re-run it. Your results are still there. BigQuery automa

You can use query parameters in BigQuery hashtag#SQL (now in the console as well!) — but how are they different from variables, and when should you use each? Both parameters and variables act as place

If you ever worked with SQL, even a tiny bit, you know NULL is very special value. Like no other. It's very different than an empty string '' or 0, rather representing the absence of a value.
A couple fun things about it:
🔹 you cannot test if NULL is in a list of values: NULL IN (NULL) returns a NULL
🔹 both (NULL = NULL) and (NULL <> / != NULL) are not allowed
🔹 COUNT(column) counts non-null occurrences in a column, whereas
COUNT(*) or COUNT(1) counts all rows, including those with NULLS
🔹 main aggregate functions ignore such SUM, COUNT, MIN, MAX, AVG ignore rows with NULLS; NULL is not the smallest value, it's just NULL, but
🔹 ORDER by shows NULLS first by default when sorting ascending
🔹 since a NULL not equal (not even comparable) to another NULL, upon joining, NULL values are not going to be matched
You can handle NULLS with:
🔹 x IS NULL/ IS NOT NULL : checks if something is or is not a NULL
🔹 COALESCE: take first non-null value in a list of values
🔹 IFNULL/ISNULL: if null, use a backup value
🔹 NULLIF: replace this value with a NULL
Found it useful? Subscribe to my Analytics newsletter at notjustsql.com.
Enjoyed this? Here are some related articles you might find useful: