COALESCE returns values; WHERE filters rows.

highlighted = computed this step

Not a WHERE filter

COALESCE chooses an output value. WHERE decides whether a row is kept.

value choice not row filter\text{value choice not row filter}

Read kept rows

Even with 2 NULL results, the expression still returns 4 output rows.

output rows=4\text{output rows}=4

COALESCE examples are tiny finite row transforms with SQL-style NULL choice behavior; SQL dialect completeness, type coercion, optimizer behavior, indexing, and product claims are out of scope.

Not a WHERE filter: base rowsnameemailbackupnicknameAdaada@exampleada@backupNULLBeaNULLbea@backupBCalNULLNULLCalDeeNULLNULLNULL COALESCE argument choicesourcearg valueschosenIndexresultresultSource0[ada@example, ada@backup]0ada@exampleemail1[NULL, bea@backup]1bea@backupbackup2[NULL, NULL]noneNULLall NULL3[NULL, NULL]noneNULLall NULL COALESCE output rowsnameemailbackupnicknamecontactAdaada@exampleada@backupNULLada@exampleBeaNULLbea@backupBbea@backupCalNULLNULLCalNULLDeeNULLNULLNULLNULL COALESCE factsfactvalueinputRowCount4argCount2outputRowCount4firstArgRows1fallbackRows1literalDefaultRows0allNullRows2rowOrdersource_orderwhereContrastvalue_choice_not_truth_filter

UNKNOWN belongs to predicates

A WHERE predicate can drop UNKNOWN rows; COALESCE itself only returns a cell value.

WHERE is separate\text{WHERE is separate}

Summary

NULL result is not the same thing as a filtered-out row.

NULL value not dropped row\text{NULL value not dropped row}