Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Valor máximo do problema T-SQL BETWEEN primeiro


Conforme a documentação diz:

Não diz nada sobre a troca de start_expression e end_expression para corresponder aos valores mínimo e máximo. Você deve esperar o resultado conforme documentado, não como você acredita que deveria.

Para os curiosos, o padrão ANSI SQL99 especifica que o predicado BETWEEN deve incluir uma cláusula para comparação SYMMETRIC ou ASYMMETRIC. Apenas o SYMMETRIC tem permissão para trocar o start_range e end_range, o ASYMMETRIC deve ser estrito. A forma ASSIMÉTRICA é a forma implícita. Em outras palavras, uma implementação que interpreta A BETWEEN X and Y como (A>=X AND A<=Y) OR (A>=Y AND A<=X) , como o OP sugere, não é compatível com o padrão.