A ordem de avaliação das expressões no
select
é indefinido. Na maioria das vezes, você só percebe isso quando tem variáveis, pois os erros resultam em informações errôneas. Por quê? O padrão SQL não exige a ordem de avaliação, portanto, cada banco de dados é livre para decidir como avaliar as expressões. Normalmente, essas decisões são deixadas para o otimizador.