Expresiones (Transact-SQL)Expressions (Transact-SQL)

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2008)síAzure SQL DatabasesíAzure SQL Data Warehouse síAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Se trata de una combinación de símbolos y operadores que Motor de base de datos de SQL ServerSQL Server Database Engine evalúa para obtener un único valor de datos.Is a combination of symbols and operators that the Motor de base de datos de SQL ServerSQL Server Database Engine evaluates to obtain a single data value. Las expresiones simples pueden ser una sola constante, variable, columna o función escalar.Simple expressions can be a single constant, variable, column, or scalar function. Los operadores se pueden usar para combinar dos o más expresiones simples y formar una expresión compleja.Operators can be used to join two or more simple expressions into a complex expression.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

-- Syntax for SQL Server and Azure SQL Database  

{ constant | scalar_function | [ table_name. ] column | variable   
    | ( expression ) | ( scalar_subquery )   
    | { unary_operator } expression   
    | expression { binary_operator } expression   
    | ranking_windowed_function | aggregate_windowed_function  
}  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

-- Expression in a SELECT statement  
<expression> ::=   
{  
    constant   
    | scalar_function   
    | column  
    | variable  
    | ( expression  )  
    | { unary_operator } expression   
    | expression { binary_operator } expression   
}  
[ COLLATE Windows_collation_name ]  

-- Scalar Expression in a DECLARE, SET, IF…ELSE, or WHILE statement  
<scalar_expression> ::=  
{  
    constant   
    | scalar_function   
    | variable  
    | ( expression  )  
    | (scalar_subquery )  
    | { unary_operator } expression   
    | expression { binary_operator } expression   
}  
[ COLLATE { Windows_collation_name ]  

ArgumentosArguments

TérminoTerm DefiniciónDefinition
(constante)constant Es un símbolo que representa un único valor de datos específico.Is a symbol that represents a single, specific data value. Para obtener más información, vea constantes ( Transact-SQL ) .For more information, see Constants (Transact-SQL).
generar scalar_functionscalar_function Es una unidad de Transact-SQLTransact-SQL sintaxis que proporciona un servicio específico y devuelven un valor único.Is a unit of Transact-SQLTransact-SQL syntax that provides a specific service and returns a single value. generar scalar_function pueden ser funciones escalares integradas, como las funciones SUM, GETDATE o CAST o funciones escalares definidas por el usuario.scalar_function can be built-in scalar functions, such as the SUM, GETDATE, or CAST functions, or scalar user-defined functions.
[ table_name.[ table_name. ]] Es el nombre o alias de una tabla.Is the name or alias of a table.
columnacolumn Es el nombre de una columna.Is the name of a column. En una expresión solo se admite el nombre de la columna.Only the name of the column is allowed in an expression.
variablevariable Es el nombre de una variable o un parámetro.Is the name of a variable, or parameter. Para obtener más información, vea DECLARE @local_variable (Transact-SQL).For more information, see DECLARE @local_variable (Transact-SQL).
( expresión) ( expression ) Es cualquier expresión válida tal como se define en este tema.Is any valid expression as defined in this topic. Los paréntesis son operadores de agrupación que garantizan que todos los operadores de la expresión escritos entre paréntesis se evalúen antes de que la expresión resultante se combine con otra.The parentheses are grouping operators that make sure that all the operators in the expression within the parentheses are evaluated before the resulting expression is combined with another.
( scalar_subquery )( scalar_subquery ) Es una subconsulta que devuelve un valor.Is a subquery that returns one value. Por ejemplo:For example:

SELECT MAX(UnitPrice)

FROM Products
{ unary_operator }{ unary_operator } Los operadores unarios solo se pueden aplicar a las expresiones que se evalúen como un tipo de datos numérico.Unary operators can be applied only to expressions that evaluate to any one of the data types of the numeric data type category. Es un operador que solo tiene un operando numérico:Is an operator that has only one numeric operand:

+ indica que es un número positivo.+ indicates a positive number.

- indica que es un número negativo.- indicates a negative number.

~ indica el operador complementario.~ indicates the one's complement operator.
{ binary_operator }{ binary_operator } Es un operador que define la forma en que deben combinarse dos expresiones para producir un único resultado.Is an operator that defines the way two expressions are combined to yield a single result. binary_operator puede ser un operador aritmético, el operador de asignación (=), un operador bit a bit, un operador de comparación, un operador lógico, el operador de concatenación (+) o un operador unario.binary_operator can be an arithmetic operator, the assignment operator (=), a bitwise operator, a comparison operator, a logical operator, the string concatenation operator (+), or a unary operator. Para obtener más información acerca de los operadores, vea operadores ( Transact-SQL ) .For more information about operators, see Operators (Transact-SQL).
ranking_windowed_functionranking_windowed_function Es cualquier función de categoría de Transact-SQLTransact-SQL.Is any Transact-SQLTransact-SQL ranking function. Para obtener más información, vea funciones de categoría ( Transact-SQL ) .For more information, see Ranking Functions (Transact-SQL).
aggregate_windowed_functionaggregate_windowed_function Es cualquier función de agregado de Transact-SQLTransact-SQL con la cláusula OVER.Is any Transact-SQLTransact-SQL aggregate function with the OVER clause. Para obtener más información, consulte la cláusula OVER ( Transact-SQL ) .For more information, see OVER Clause (Transact-SQL).

Resultados de la expresiónExpression Results

Para una expresión sencilla creada con una constante, variable, función escalar o nombre de columna, el tipo de datos, intercalación, precisión, escala y valor de la expresión es el tipo de datos, intercalación, precisión, escala y valor del elemento de referencia.For a simple expression made up of a single constant, variable, scalar function, or column name: the data type, collation, precision, scale, and value of the expression is the data type, collation, precision, scale, and value of the referenced element.

Si se combinan dos expresiones mediante operadores de comparación o lógicos, el tipo de datos resultante es booleano y el valor es uno de los siguientes: TRUE, FALSE o UNKNOWN.When two expressions are combined by using comparison or logical operators, the resulting data type is Boolean and the value is one of the following: TRUE, FALSE, or UNKNOWN. Para obtener más información acerca de los tipos de datos Boolean, consulte operadores de comparación ( Transact-SQL ) .For more information about Boolean data types, see Comparison Operators (Transact-SQL).

Cuando dos expresiones se combinan mediante operadores aritméticos, bit a bit o de cadena, el operador determina el tipo de datos resultante.When two expressions are combined by using arithmetic, bitwise, or string operators, the operator determines the resulting data type.

Las expresiones complejas formadas por varios símbolos y operadores se evalúan como un resultado formado por un solo valor.Complex expressions made up of many symbols and operators evaluate to a single-valued result. El tipo de datos, intercalación, precisión y valor de la expresión resultante se determina al combinar las expresiones componentes de dos en dos, hasta que se alcanza un resultado final.The data type, collation, precision, and value of the resulting expression is determined by combining the component expressions, two at a time, until a final result is reached. La prioridad de los operadores de la expresión define la secuencia en que se combinan las expresiones.The sequence in which the expressions are combined is defined by the precedence of the operators in the expression.

ComentariosRemarks

Dos expresiones pueden combinarse mediante un operador si ambas tienen tipos de datos admitidos por el operador y se cumple al menos una de estas condiciones:Two expressions can be combined by an operator if they both have data types supported by the operator and at least one of these conditions is true:

  • Las expresiones tienen el mismo tipo de datos.The expressions have the same data type.

  • El tipo de datos de menor prioridad se puede convertir implícitamente al tipo de datos de mayor prioridad.The data type with the lower precedence can be implicitly converted to the data type with the higher data type precedence.

    Si las expresiones no cumplen estas condiciones, se pueden usar las funciones CAST o CONVERT para convertir explícitamente el tipo de datos de menor prioridad al tipo de datos de mayor prioridad o a un tipo de datos intermedio que se puede convertir implícitamente al tipo de datos de mayor prioridad.If the expressions do not meet these conditions, the CAST or CONVERT functions can be used to explicitly convert the data type with the lower precedence to either the data type with the higher precedence or to an intermediate data type that can be implicitly converted to the data type with the higher precedence.

    Si no se admite la conversión implícita o explícita admitida, las dos expresiones no se pueden combinar.If there is no supported implicit or explicit conversion, the two expressions cannot be combined.

    La intercalación de cualquier expresión que se evalúa como una cadena de caracteres se establece según las reglas de prioridad de intercalación.The collation of any expression that evaluates to a character string is set by following the rules of collation precedence. Para obtener más información, vea prioridad de intercalación ( Transact-SQL ) .For more information, see Collation Precedence (Transact-SQL).

    En un lenguaje de programación como C o MicrosoftMicrosoft Visual BasicVisual Basic, una expresión siempre se evalúa como un único resultado.In a programming language such as C or MicrosoftMicrosoft Visual BasicVisual Basic, an expression always evaluates to a single result. Las expresiones de una lista de selección de Transact-SQLTransact-SQL constituyen una variación de esta regla: la expresión se evalúa individualmente para cada fila del conjunto de resultados.Expressions in a Transact-SQLTransact-SQL select list follow a variation on this rule: The expression is evaluated individually for each row in the result set. Una única expresión puede tener un valor distinto en cada fila del conjunto de resultados, pero cada fila tiene un único valor para la expresión.A single expression may have a different value in each row of the result set, but each row has only one value for the expression. Por ejemplo, en esta instrucción SELECT, tanto la referencia a ProductID como el término 1+2 de la lista seleccionada son expresiones:For example, in the following SELECT statement both the reference to ProductID and the term 1+2 in the select list are expressions:

USE AdventureWorks2012;  
GO  
SELECT ProductID, 1+2  
FROM Production.Product;  
GO  

La expresión 1+2 se evalúa como 3 en cada fila del conjunto de resultados.The expression 1+2 evaluates to 3 in each row in the result set. Aunque la expresión ProductID genera un valor único en cada fila del conjunto de resultados, cada fila tiene solo un valor para ProductID.Although the expression ProductID generates a unique value in each result set row, each row only has one value for ProductID.

Vea tambiénSee Also

EN la zona HORARIA ( Transact-SQL ) AT TIME ZONE (Transact-SQL)
CASO ( Transact-SQL ) CASE (Transact-SQL)
CAST y CONVERT ( Transact-SQL ) CAST and CONVERT (Transact-SQL)
COALESCE ( Transact-SQL ) COALESCE (Transact-SQL)
Conversiones de tipos de datos ( motor de base de datos ) Data Type Conversion (Database Engine)
Prioridad de tipo de datos ( Transact-SQL ) Data Type Precedence (Transact-SQL)
Tipos de datos (Transact-SQL) Data Types (Transact-SQL)
Funciones integradas (Transact-SQL) Built-in Functions (Transact-SQL)
COMO ( Transact-SQL ) LIKE (Transact-SQL)
NULLIF ( Transact-SQL ) NULLIF (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
DONDE ( Transact-SQL )WHERE (Transact-SQL)