Expressões (Transact-SQL)Expressions (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

É uma combinação de símbolos e operadores que o Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine avalia para obter um único valor de dados.Is a combination of symbols and operators that the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine evaluates to obtain a single data value. Expressões simples podem ser uma única constante, variável, coluna ou função escalar.Simple expressions can be a single constant, variable, column, or scalar function. Os operadores podem ser usados para unir duas ou mais expressões simples em uma expressão complexa.Operators can be used to join two or more simple expressions into a complex expression.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- 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

TermoTerm DefiniçãoDefinition
constantconstant É um símbolo que representa um valor de dados único e específico.Is a symbol that represents a single, specific data value. Para obter mais informações, consulte Constantes (Transact-SQL).For more information, see Constants (Transact-SQL).
scalar_functionscalar_function É uma unidade de sintaxe de Transact-SQLTransact-SQL que fornece um serviço específico e retorna um único valor.Is a unit of Transact-SQLTransact-SQL syntax that provides a specific service and returns a single value. scalar_function podem ser funções escalares internas, como as funções SUM, GETDATE ou CAST ou funções escalares definidas pelo usuário.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. ]] É o nome ou alias de uma tabela.Is the name or alias of a table.
columncolumn É o nome de uma coluna.Is the name of a column. Somente o nome da coluna é permitido em uma expressão.Only the name of the column is allowed in an expression.
variablevariable É o nome de uma variável ou parâmetro.Is the name of a variable, or parameter. Para obter mais informações, consulte DECLARE @local_variable (Transact-SQL).For more information, see DECLARE @local_variable (Transact-SQL).
( expressão )( expression ) É qualquer expressão válida conforme definido neste tópico.Is any valid expression as defined in this topic. Os parênteses são operadores de agrupamento que verificam se todos os operadores na expressão entre parênteses são avaliados antes de a expressão resultante ser combinada com outra.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 ) É uma subconsulta que retorna um valor.Is a subquery that returns one value. Por exemplo:For example:

SELECT MAX(UnitPrice)

FROM Products
{ unary_operator }{ unary_operator } Os operadores unários podem ser aplicados somente a expressões que avaliam qualquer um dos tipos de dados da categoria de tipo de dados 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. É um operador que tem somente um operando numérico:Is an operator that has only one numeric operand:

+ indica um número positivo.+ indicates a positive number.

- indica um número negativo.- indicates a negative number.

~ indica o operador de complemento.~ indicates the one's complement operator.
{ binary_operator }{ binary_operator } É um operador que define a maneira como duas expressões são combinadas para produzir um único resultado.Is an operator that defines the way two expressions are combined to yield a single result. binary_operator pode ser um operador aritmético, o operador de atribuição (=), um operador bit a bit, um operador de comparação, um operador lógico, o operador de concatenação de cadeia de caracteres (+) ou um operador unário.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 obter mais informações sobre operadores, confira Operadores (Transact-SQL).For more information about operators, see Operators (Transact-SQL).
ranking_windowed_functionranking_windowed_function É qualquer função de classificação Transact-SQLTransact-SQL.Is any Transact-SQLTransact-SQL ranking function. Para obter mais informações, confira Funções de classificação (Transact-SQL).For more information, see Ranking Functions (Transact-SQL).
aggregate_windowed_functionaggregate_windowed_function É qualquer função de agregação Transact-SQLTransact-SQL com a cláusula OVER.Is any Transact-SQLTransact-SQL aggregate function with the OVER clause. Para obter mais informações, consulte Cláusula OVER (Transact-SQL).For more information, see OVER Clause (Transact-SQL).

Resultados da expressãoExpression Results

Em uma expressão simples composta de uma única constante, variável, função escalar ou nome de coluna: o tipo de dados, ordenação, precisão, escala e valor da expressão é o tipo de dados, ordenação, precisão, escala e valor do elemento referenciado.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.

Quando duas expressões são combinadas usando operadores lógicos ou de comparação, o tipo de dados resultante é booliano e o valor é um dos seguintes: TRUE, FALSE ou 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 obter mais informações sobre tipos de dados boolianos, confira Operadores de comparação (Transact-SQL).For more information about Boolean data types, see Comparison Operators (Transact-SQL).

Quando duas expressões são combinadas usando operadores aritméticos, bit a bit ou de cadeia de caracteres, o operador determina o tipo de dados resultante.When two expressions are combined by using arithmetic, bitwise, or string operators, the operator determines the resulting data type.

Expressões complexas compostas de muitos símbolos e operadores são avaliadas como um único resultado avaliado.Complex expressions made up of many symbols and operators evaluate to a single-valued result. O tipo de dados, a ordenação, a precisão, a escala e o valor da expressão resultante são determinados pela combinação das expressões de componentes, duas de cada vez, até o resultado final ser alcançado.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. A sequência na qual as expressões são combinadas é definida pela precedência dos operadores na expressão.The sequence in which the expressions are combined is defined by the precedence of the operators in the expression.

RemarksRemarks

Duas expressões podem ser combinadas por um operador se o operador oferecer suporte para os tipos de dados das duas e pelo menos uma destas condições for verdadeira: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:

  • As expressões têm o mesmo tipo de dados.The expressions have the same data type.

  • O tipo de dados com a menor precedência pode ser implicitamente convertido em tipo de dados com a maior precedência de tipo de dados.The data type with the lower precedence can be implicitly converted to the data type with the higher data type precedence.

Se as expressões não atenderem a essas condições, as funções CAST ou CONVERT poderão ser usadas para converter explicitamente o tipo de dados de menor precedência em qualquer tipo de dados de maior precedência ou em um tipo de dados intermediário que possa ser implicitamente convertido no tipo de dados com a maior precedência.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.

Se não houver nenhuma conversão implícita ou explícita com suporte, as duas expressões não poderão ser combinadas.If there is no supported implicit or explicit conversion, the two expressions cannot be combined.

A ordenação de qualquer expressão avaliada como uma cadeia de caracteres é definida seguindo as regras de precedência de ordenação.The collation of any expression that evaluates to a character string is set by following the rules of collation precedence. Para obter mais informações, consulte Precedência de ordenação (Transact-SQL ).For more information, see Collation Precedence (Transact-SQL).

Em uma linguagem de programação como C ou MicrosoftMicrosoft Visual BasicVisual Basic, uma expressão sempre é avaliada como um único resultado.In a programming language such as C or MicrosoftMicrosoft Visual BasicVisual Basic, an expression always evaluates to a single result. Expressões em uma lista selecionada Transact-SQLTransact-SQL seguem uma variação nesta regra: A expressão é avaliada individualmente para cada linha no 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. Uma única expressão pode ter um valor diferente em cada linha do conjunto de resultados, mas cada linha tem apenas um valor para a expressão.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 exemplo, na seguinte instrução SELECT, as referências a ProductID e ao termo 1+2 na lista de seleção são expressões: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  

A expressão 1+2 é avaliada como 3 em cada linha do conjunto de resultados.The expression 1+2 evaluates to 3 in each row in the result set. Embora a expressão ProductID gere um valor exclusivo em cada linha de conjunto de resultados, cada linha tem apenas um valor para ProductID.Although the expression ProductID generates a unique value in each result set row, each row only has one value for ProductID.

  • O SQL Data Warehouse do Azure aloca uma quantidade máxima fixa de memória para cada thread, de modo que nenhum thread possa usar toda a memória.Azure SQL Data Warehouse allocates a fixed maximum amount of memory to each thread so no thread can use up all the memory. Parte dessa memória é usada para armazenar expressões de consultas.Some of this memory is used for storing queries’ expressions. Se uma consulta tiver muitas expressões e sua memória necessária exceder o limite interno, o mecanismo não a executará.If a query has too many expressions and its required memory exceeds the internal limit, the engine will not execute it. Para evitar esse problema, os usuários podem alterar a consulta em várias consultas com um número menor de expressões em cada uma.To avoid this problem, users can change the query into multiple queries with smaller number of expressions in each. Por exemplo, você tem uma consulta com uma longa lista de expressões na cláusula WHERE:For example, you have a query with a long list of expressions in the WHERE clause:
DELETE FROM dbo.MyTable 
WHERE
(c1 = '0000001' AND c2 = 'A000001') or
(c1 = '0000002' AND c2 = 'A000002') or
(c1 = '0000003' AND c2 = 'A000003') or
...

Altere esta consulta para:Change this query to:

DELETE FROM dbo.MyTable WHERE (c1 = '0000001' AND c2 = 'A000001');
DELETE FROM dbo.MyTable WHERE (c1 = '0000002' AND c2 = 'A000002');
DELETE FROM dbo.MyTable WHERE (c1 = '0000003' AND c2 = 'A000003');
...

Consulte TambémSee Also

AT TIME ZONE (Transact-SQL) AT TIME ZONE (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CAST e CONVERT (Transact-SQL) CAST and CONVERT (Transact-SQL)
COALESCE (Transact-SQL) COALESCE (Transact-SQL)
Conversão de tipo de dados (Mecanismo de Banco de Dados) Data Type Conversion (Database Engine)
Precedência de tipo de dados (Transact-SQL) Data Type Precedence (Transact-SQL)
Tipos de dados (Transact-SQL) Data Types (Transact-SQL)
Funções internas (Transact-SQL) Built-in Functions (Transact-SQL)
LIKE (Transact-SQL) LIKE (Transact-SQL)
NULLIF (Transact-SQL) NULLIF (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
WHERE (Transact-SQL)WHERE (Transact-SQL)