Funciones lógicas - LEAST (Transact-SQL)

Se aplica a: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Esta función devuelve el valor mínimo de una lista de una o varias expresiones.

Convenciones de sintaxis de Transact-SQL

Sintaxis

LEAST ( expression1 [ , ...expressionN ] )

Argumentos

expresión1, expresiónN

Lista de expresiones separadas por comas de cualquier tipo de datos comparable. La función LEAST requiere al menos un argumento y no admite más de 254.

Cada expresión puede ser una constante, una variable, un nombre de columna o función, o bien cualquier combinación de operadores aritméticos, bit a bit o de cadena. Se permiten las funciones de agregado y las subconsultas escalares.

Tipos de valores devueltos

Devuelve el tipo de datos con la mayor prioridad del conjunto de tipos pasados a la función. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).

Si todos los argumentos tienen el mismo tipo de datos y este se admite para la comparación, LEAST devuelve ese tipo.

De lo contrario, la función convertirá implícitamente todos los argumentos al tipo de datos con la precedencia más alta antes de la comparación y lo usará como tipo de valor devuelto.

En el caso de los tipos numéricos, la escala del tipo de valor devuelto será la misma que el argumento con la precedencia más alta; en el caso de que esta se dé en varios argumentos, la escala será la más alta.

Observaciones

Todas las expresiones de la lista de argumentos deben ser de un tipo de datos que sea comparable y que se pueda convertir implícitamente al tipo de datos del argumento con la precedencia más alta.

La conversión implícita de todos los argumentos al tipo de datos con mayor precedencia se realizará antes de la comparación.

Si no se admite la conversión implícita de tipos entre los argumentos, se producirá un error en la función y se devolverá un error.

Para obtener más información sobre la conversión implícita y explícita, vea Conversiones de tipos de datos (Motor de base de datos).

Si uno o más argumentos no son NULL, se omiten los argumentos NULL durante la comparación. Si todos los argumentos son NULL, LEAST devuelve NULL.

La comparación de los argumentos de caracteres sigue las reglas de Prioridad de intercalación (Transact-SQL).

Los tipos siguientes no se admiten para la comparación en LEAST: varchar(max), varbinary(max) o nvarchar(max) con más de 8000 bytes, cursor, geometría, geografía, imagen, tipos no definidos por el usuario sin orden de bytes, ntext, tabla, text y xml.

Los tipos de datos varchar(max), varbinary(max), and nvarchar(max) se admiten para los argumentos de 8000 bytes o menos, y que convertirán implícitamente a varchar(n), varbinary(n) y nvarchar(n), respectivamente, antes de la comparación.

Por ejemplo, varchar(max) admite hasta 8000 caracteres si se usa un juego de caracteres de codificación de un solo byte y nvarchar(max) admite hasta 4000 pares de bytes (suponiendo que la codificación de caracteres es UTF-16).

Ejemplos

A Devolver el valor mínimo de una lista de constantes

En el ejemplo siguiente, se devuelve el valor mínimo de la lista de constantes que se proporciona.

La escala del tipo de valor devuelto viene determinada por la escala del argumento con el tipo de datos de mayor precedencia.

SELECT LEAST('6.62', 3.1415, N'7') AS LeastVal;
GO

El conjunto de resultados es el siguiente:

LeastVal
-------
 3.1415

(1 rows affected)

B. Devolución del valor mínimo de una lista de tipos de caracteres

En el ejemplo siguiente, se devuelve el valor mínimo de la lista de constantes de caracteres que se proporciona.

SELECT LEAST('Glacier', N'Joshua Tree', 'Mount Rainier') AS LeastString;
GO

El conjunto de resultados es el siguiente:

LeastString
-------------
Glacier

(1 rows affected)

C. Devolución del valor mínimo de una lista de argumentos de columna

En este ejemplo, se devuelve el valor mínimo de una lista de argumentos de columna y se omiten los valores NULL durante la comparación. En este ejemplo se usa la base de datos AdventureWorksLT, que se puede instalar rápidamente como base de datos de ejemplo para una nueva instancia de Azure SQL Database. Para más información, vea Bases de datos de ejemplo AdventureWorks.

SELECT P.Name,
    P.SellStartDate,
    P.DiscontinuedDate,
    PM.ModifiedDate AS ModelModifiedDate,
    LEAST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) AS EarliestDate
FROM SalesLT.Product AS P
INNER JOIN SalesLT.ProductModel AS PM
    ON P.ProductModelID = PM.ProductModelID
WHERE LEAST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) >= '2007-01-01'
    AND P.SellStartDate >= '2007-01-01'
    AND P.Name LIKE 'Touring %'
ORDER BY P.Name;

El conjunto de resultados es el siguiente: EarliestDate elige el menor valor de fecha de los tres valores, omitiendo NULL.

Name                   SellStartDate           DiscontinuedDate    ModelModifiedDate       EarliestDate
---------------------- ----------------------- ------------------- ----------------------- -----------------------
Touring Pedal          2007-07-01 00:00:00.000 NULL                2009-05-16 16:34:29.027 2007-07-01 00:00:00.000
Touring Tire           2007-07-01 00:00:00.000 NULL                2007-06-01 00:00:00.000 2007-06-01 00:00:00.000
Touring Tire Tube      2007-07-01 00:00:00.000 NULL                2007-06-01 00:00:00.000 2007-06-01 00:00:00.000

(3 rows affected)

D. Uso de LEAST con variables locales

En este ejemplo, se usa LEAST para determinar el valor mínimo de una lista de variables locales en el predicado de una cláusula WHERE.

CREATE TABLE dbo.Studies (
    VarX VARCHAR(10) NOT NULL,
    Correlation DECIMAL(4, 3) NULL
    );

INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
    ('Var2', 0.825),
    ('Var3', 0.61);
GO

DECLARE @PredictionA DECIMAL(2, 1) = 0.7;
DECLARE @PredictionB DECIMAL(3, 1) = 0.65;

SELECT VarX,
    Correlation
FROM dbo.Studies
WHERE Correlation < LEAST(@PredictionA, @PredictionB);
GO

El conjunto de resultados es el siguiente: Solo se muestran los valores inferiores a 0,65.

VarX       Correlation
---------- -----------
Var1              .200
Var3              .610

(2 rows affected)

E. Uso de LEAST con columnas, constantes y variables

En este ejemplo, se usa LEAST para determinar el valor mínimo de una lista que incluye columnas, constantes y variables.

CREATE TABLE dbo.Studies (
    VarX VARCHAR(10) NOT NULL,
    Correlation DECIMAL(4, 3) NULL
    );

INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
    ('Var2', 0.825),
    ('Var3', 0.61);
GO

DECLARE @VarX DECIMAL(4, 3) = 0.59;

SELECT VarX,
    Correlation,
    LEAST(Correlation, 1.0, @VarX) AS LeastVar
FROM dbo.Studies;
GO

El conjunto de resultados es el siguiente:

VarX       Correlation           LeastVar
---------- --------------------- ---------------------
Var1       0.200                 0.200
Var2       0.825                 0.590
Var3       0.610                 0.590

(3 rows affected)