¡¡Hola, chicos!!
En este post me gustaría traer algo nuevo que ya está disponible en Azure SQL Database y creo que pronto estará disponible también en SQL Server On-premise, que son las “nuevas” (Para los que ya trabajan con otros bancos, esta función es muy conocida y está disponible desde hace muchos años) las funciones MAYOR y MENOR, que tienen como objetivo devolver el valor mayor o menor entre una lista de diferentes valores o columnas.
Aún no he visto documentación sobre esto, ni ningún contenido en portugués y decidí compartir esta noticia y también mostrar cómo funcionará.
Me enteré de estas nuevas funciones cuando vi un tweet de la leyenda Itzik Ben-Gan al respecto:

Incluso pensé que era alguna broma o broma, fui a probarlo en un SQL Server 2019 CU8 (el más reciente hasta la fecha) y, como esperaba, apareció un mensaje de error indicando que esta función no existe:

Pero cuando probé en Azure SQL Database, que siempre tiene la versión más actual de SQL Server posible, esta función estaba ahí:

Así que demostraré rápidamente algunas formas de usar estas dos funciones en SQL Server.
Si está utilizando una versión de SQL Server que no admite las funciones MAYOR y MENOR, puede lograr el mismo comportamiento utilizando algunas técnicas que expliqué en el artículo. Cómo recuperar el valor más grande entre varias columnas en una tabla de SQL Server.
Ejemplo:
SELECT
MAX(Valores.Valor) AS [GREATEST],
MIN(Valores.Valor) AS [LEAST]
FROM
(VALUES (4), (85), (120), (154), (52), (87), (999), (15), (12)) AS Valores(Valor)
Y esto también se puede aplicar a varias columnas de una tabla:
SELECT
ID,
Data1, Data2, Data3,
(
SELECT MAX(UltimoAcesso)
FROM (VALUES (Data1),(Data2),(Data3)) AS UltimoAcesso(UltimoAcesso)
) AS MaiorData
FROM
##Teste
Ya utilizando las nuevas funciones, el comportamiento es muy sencillo:
SELECT
ID,
Data1, Data2, Data3,
GREATEST(Data1, Data2, Data3) AS MaiorData,
LEAST(Data1, Data2, Data3) AS MenorData
FROM
##Teste
Recordando que esta función funciona con fechas, números e incluso cadenas.
Ejemplo con números:
SELECT
*,
GREATEST(Valor1, Valor2, Valor3, Valor4, Valor5, Valor6) AS GREATEST,
LEAST(Valor1, Valor2, Valor3, Valor4, Valor5, Valor6) AS LEAST
FROM
##Teste
Ejemplo con palabras:
SELECT
*,
GREATEST(Nome1, Nome2, Nome3, Nome4) AS GREATEST,
LEAST(Nome1, Nome2, Nome3, Nome4) AS LEAST
FROM
#Teste
- Si el tipo de datos de los valores o columnas difiere, todas las expresiones se convierten al tipo de la primera expresión o columna a comparar.
- Al comparar cadenas y textos, la comparación se realizará utilizando el código ASCII, es decir, el algoritmo comparará el primer carácter de cada expresión e identificará cuál tiene el código ASCII más grande... En caso de empate, se evaluará el segundo carácter y así sucesivamente hasta que ya se hayan evaluado todas las expresiones para decidir cuál es el mayor o el menor.
Bueno, ¡eso es todo amigos!
Espero que hayas disfrutado del artículo y ¡hasta luego!





Comentários (0)
Carregando comentários…