Expresiones (Transact-SQL)
Se trata de una combinación de símbolos y operadores que Motor de base de datos de SQL Server evalúa para obtener un único valor de datos. Las expresiones simples pueden ser una sola constante, variable, columna o función escalar. Los operadores se pueden usar para combinar dos o más expresiones simples y formar una expresión compleja.
Convenciones de sintaxis de Transact-SQL
Sintaxis
{ constant | scalar_function | [ table_name. ] column | variable
| ( expression ) | ( scalar_subquery )
| { unary_operator } expression
| expression { binary_operator } expression
| ranking_windowed_function | aggregate_windowed_function
}
Argumentos
Término |
Definición |
---|---|
constant |
Es un símbolo que representa un único valor de datos específico. Para obtener más información, vea Constantes (Transact-SQL). |
scalar_function |
Es una unidad de sintaxis de Transact-SQL que proporciona un servicio específico y devuelve un único valor. scalar_function puede ser una función escalar incorporada, como las funciones SUM, GETDATE o CAST, o una función escalar definida por el usuario. |
[ table_name. ] |
Es el nombre o alias de una tabla. |
column |
Es el nombre de una columna. En una expresión solo se admite el nombre de la columna. |
variable |
Es el nombre de una variable o un parámetro. Para obtener más información, vea DECLARE @local_variable (Transact-SQL). |
( expression ) |
Es cualquier expresión válida tal como se define en este tema. 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. |
( scalar_subquery ) |
Es una subconsulta que devuelve un valor. Por ejemplo: SELECT MAX(UnitPrice) FROM Products |
{ unary_operator } |
Es un operador que solo tiene un operando numérico:
Los operadores unarios solo se pueden aplicar a las expresiones que se evalúen como un tipo de datos numérico. |
{ binary_operator } |
Es un operador que define la forma en que deben combinarse dos expresiones para producir un único resultado. 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 de cadena (+) o un operador unario. Para obtener más información acerca de los operadores, vea Operadores (Transact-SQL). |
ranking_windowed_function |
Es cualquier función de categoría de Transact-SQL. Para obtener más información, vea Funciones de categoría (Transact-SQL). |
aggregate_windowed_function |
Es cualquier función de agregado de Transact-SQL con la cláusula OVER. Para obtener más información, vea OVER (cláusula de Transact-SQL). |
Resultados de la expresión
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.
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. Para obtener más información acerca de los tipos de datos booleanos, vea Operadores de comparación (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.
Las expresiones complejas formadas por varios símbolos y operadores se evalúan como un resultado formado por un solo valor. 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. La prioridad de los operadores de la expresión define la secuencia en que se combinan las expresiones.
Comentarios
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:
Las expresiones tienen el mismo tipo de datos.
El tipo de datos de menor prioridad se puede convertir implícitamente al tipo de datos de mayor prioridad.
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.
Si no se admite la conversión implícita o explícita admitida, las dos expresiones no se pueden combinar.
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. Para obtener más información, vea Prioridad de intercalación (Transact-SQL).
En un lenguaje de programación como C o Microsoft Visual Basic, una expresión siempre se evalúa como un resultado único. Las expresiones de una lista de selección de Transact-SQL constituyen una variación de esta regla: la expresión se evalúa individualmente para cada fila del conjunto de resultados. 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. Por ejemplo, en esta instrucción SELECT, tanto la referencia a ProductID como el término 1+2 de la lista seleccionada son expresiones:
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. Aunque la expresión ProductID genera un valor único en cada fila del conjunto de resultados, cada fila tiene solo un valor para ProductID.
Vea también
Referencia
Prioridad de tipo de datos (Transact-SQL)
Funciones integradas (Transact-SQL)