NULL comparisons become UNKNOWN.

highlighted = computed this step

NULL gives UNKNOWN

A comparison with NULL does not become TRUE or FALSE.

NULL comparison=UNKNOWN\text{NULL comparison}=\text{UNKNOWN}

Read UNKNOWN rows

The city comparison has 1 UNKNOWN row.

UNKNOWN rows=1\text{UNKNOWN rows}=1

Comparison examples are tiny finite-table transforms with SQL-style TRUE/FALSE/UNKNOWN results; SQL dialect completeness, type coercion, optimizer behavior, indexing, and product claims are out of scope.

NULL comparison gives UNKNOWN: base rowsidnameqtycity1alpha3Austin2beta7Boston3gamma7NULL4delta10Denver5epsilonNULLAustin Comparison result per rowsourceleftValueoprightValuetruthoutputRole0AustineqAustinTRUEkept1BostoneqAustinFALSEdropped2NULLeqAustinUNKNOWNdropped3DenvereqAustinFALSEdropped4AustineqAustinTRUEkept WHERE-style TRUE-only output rowsidnameqtycity1alpha3Austin5epsilonNULLAustin Comparison factsfactvalueinputRowCount5trueCount2falseCount2unknownCount1outputRowCount2droppedRowCount3orderedComparisonnowhereKeepsTRUE_only_source_order

UNKNOWN drops under WHERE

WHERE-style output keeps TRUE rows only, so UNKNOWN rows are dropped.

UNKNOWN dropped\text{UNKNOWN dropped}

Summary

NULL comparison behavior is visible in the per-row truth table.

visible UNKNOWN\text{visible UNKNOWN}