WHERE clause

The WHERE clause inputs the bindings that have been produced from the FROM clause and outputs the ones that satisfy its condition.

The boolean predicates follow SQL’s 3-valued logic. Recall, PartiQL has two kinds of absent values: NULL and MISSING. As far as the boolean connectives and IS NULL are concerned a NULL input and a MISSING input behave identically. For example, MISSING AND TRUE is equivalent to NULL AND TRUE: they both result into NULL.

Alike SQL, when the expression of the WHERE clause expression evaluates to an absent value or a value that is not a Boolean, PartiQL eliminates the corresponding binding.

For example,

SELECT VALUE v.a
FROM [
    { 'a' : 1, 'b': true },
    { 'a': 2, 'b': null },
    { 'a': 3 }
] v
WHERE v.b

-- result
<< 1 >>

The predicate IS MISSING allows distinguishing between NULL and MISSING.

  • NULL IS MISSING results to false

  • MISSING IS MISSING results to true