Ao pesquisar o RVC, encontrei a documentação oficial referente aos operadores de comparação, <, >, >=, <=
embora esteja claro como:
select (1,2) < (1,3)
=true
Devido à fórmula já mencionada na documentação a < c OR (a = c AND b < d)
, não está tão claro o porquê:
select (1,2,null) < (1,3,0)
=true
Para citar a documentação:
Para os casos <, <=, > e >=, os elementos da linha são comparados da esquerda para a direita, parando assim que um par de elementos desigual ou nulo é encontrado.
e
Por exemplo, ROW(1,2,NULL) < ROW(1,3,0) retorna verdadeiro, não nulo, porque o terceiro par de elementos não é considerado.
Qual é o "terceiro par" e como a fórmula é expandida/adaptada para mais e mais colunas (por exemploselect (1,2,3,4,5) < (1,3,0,8,9)
Além disso, por que isso select (1,2,0) >= (1,2,null);
retorna null
quando eu esperava true
devido 1>=1
ao início.
é equivalente a
Como 2 é menor que 3, a última
CASE
expressão (que retornaria NULL) não é executada.