Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – As “novas” funções GREATEST e LEAST

Post Views 7,235 views
Reading time 3 minutes

Fala pessoal!!
Nesse post eu gostaria de trazer uma novidade que já está disponível no Azure SQL Database e acredito que em breve, já estará disponível no SQL Server On-premises também, que são as “novas” (Para quem já trabalha com outros bancos, essa função é bem conhecida e está disponível há muitos anos) funções GREATEST e LEAST, que tem o objetivo de retornar o maior ou o menor valor entre uma lista de valores ou colunas diferentes.

Não vi documentação ainda sobre isso, e nem nenhum conteúdo em português e resolvi compartilhar essa novidade e também mostrar como vai funcionar.

Eu fiquei sabendo sobre essas novas funções quando vi um tweet da lenda Itzik Ben-Gan sobre isso:

Eu até achei que fosse alguma pegadinha ou brincadeira, fui testar num SQL Server 2019 CU8 (mais recente até o momento) e, como já esperava, apareceu uma mensagem de erro informando que essa função não existe:

Mas quando fui testar no Azure SQL Database, que sempre possui a versão mais atual possível do SQL Server, essa função estava lá:

Então vou demonstrar rapidamente, algumas formas de utilizar essas duas funções no SQL Server.

Se você está utilizando uma versão do SQL Server que não possui suporte às funções GREATEST e LEAST, você consegue ter o mesmo comportamento usando algumas técnicas que eu expliquei no artigo Como recuperar o maior valor entre múltiplas colunas em uma tabela do SQL Server.

Exemplo:

E isso também pode ser aplicado à múltiplas colunas de uma tabela:

Já utilizando as novas funções, o comportamento é bem simples:

Lembrando que essa função funciona com datas, números e até mesmo, strings

Exemplo com números:

Exemplo com palavras:

Algumas observações sobre essas funções

  • Se o tipo de dado dos valores ou colunas diferir, todas as expressões serão convertidas para o tipo da primeira expressão ou coluna para fazer a comparação.
  • Na comparação de strings e textos, a comparação será feita utilizando o código ASCII, ou seja, o algoritmo vai comparar o primeiro caractere de cada expressão e identificar qual tem o maior código ASCII… Em caso de empate, o segundo caractere será avaliado e assim sucessivamente até que todas as expressões já tenham sido avaliadas para decidir o maior ou o menor.

Bom, é isso aí pessoal!
Espero que tenham gostado do artigo e até mais!