Partilhar via


Expressão SQL

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Uma expressão é uma fórmula que calcula um resultado com base em literais ou referências a columns, campos ou variáveis, usando funções ou operadores.

Sintaxe

{ literal |
  named_parameter_marker |
  unnamed_parameter_marker |
  column_reference |
  field_reference |
  parameter_reference |
  CAST expression |
  CASE expression |
  COLLATE expression |
  expr operator expr |
  operator expr |
  expr [ expr ] |
  function_invocation |
  ( expr ) |
  ( expr, expr [, ... ] ) |
  scalar_subquery }

scalar_subquery
  ( query )

Os parênteses são expr [ expr ] parênteses reais e não indicam sintaxe opcional.

Parameters

  • Literal

    Um literal de um tipo descrito em Tipos de dados.

  • named_parameter_marker

    Um espaço reservado nomeado e digitado para um valor fornecido pela API que envia a instrução SQL.

  • unnamed_parameter_marker

    Um espaço reservado sem nome e digitado para um valor fornecido pela API que envia a instrução SQL.

  • column_reference

    Uma referência a um column em um table ou column pseudônimo.

  • field_reference

    Uma referência a um campo em um tipo STRUCT.

  • parameter_reference

    Uma referência a um parâmetro de uma função definida pelo usuário SQL a partir do corpo da função. A referência pode usar o nome não qualificado do parâmetro ou qualify o nome com o nome da função. Parameters constituem o âmbito mais externo na resolução de identificadores.

  • Expressão CAST

    Uma expressão que projeta o argumento para um tipo diferente.

  • Expressão CASE

    Uma expressão que permite uma avaliação condicional.

  • expressão COLLATE

    Uma expressão que anexa um agrupamento explícito a uma expressão de cadeia de caracteres.

  • EXPR

    Uma expressão em si que é combinada com um operator, ou que é um argumento para uma função.

  • operador

    Um operador unário ou binário.

  • expr [ expr ]

    Uma referência a um elemento de matriz ou uma chave de mapa.

  • function_invocation

    Uma invocação de uma função interna ou definida pelo usuário.

    Consulte function_invocation para obter detalhes.

  • ( expr )

    Precedência imposta que substitui a precedência do operador.

  • ( expr, expr [, ... ] )

    Cria um struct de dois ou mais campos. Esta notação é sinónimo da função struct.

  • scalar_subquery:

    • ( consulta )

      Uma expressão baseada em uma consulta que deve retornar uma única column e, no máximo, uma linha.

As páginas para cada função e operador descrevem os tipos de dados que os seus parameters esperam por. O Azure Databricks executa a conversão implícita para tipos esperados usando regras de tipo de dados SQL. Se um operador ou função for inválido para o argumento fornecido, o Azure Databricks gerará um erro.

Consulte Column, campo, parâmetro, e resolução de variável para mais informações sobre a resolução de nomes.

Expressão constante

Uma expressão que se baseia apenas em literais ou funções determinísticas sem argumentos. O Azure Databricks pode executar a expressão e usar a constante resultante where normalmente literais são necessários.

Expressão booleana

Uma expressão com um tipo de resultado de BOOLEAN. Uma expressão booleana também é por vezes referida como uma condição ou um predicado.

Subconsulta escalar

Uma expressão da forma ( query ). A consulta deve retornar um table que tenha uma column e, no máximo, uma linha.

Se a consulta não retornar nenhuma linha, o resultado será NULL. Se a consulta retornar mais de uma linha, o Azure Databricks retornará um erro. Caso contrário, o resultado será o valor retornado pela consulta.

Expressão simples

Uma expressão que não contém um query, como uma subconsulta escalar ou um EXISTS predicado.

Exemplos

> SELECT 1;
  1

> SELECT (SELECT 1) + 1;
  2

> SELECT 1 + 1;
  2

> SELECT 2 * (1 + 2);
  6

> SELECT 2 * 1 + 2;
  4

> SELECT substr('Spark', 1, 2);
  Sp

> SELECT c1 + c2 FROM VALUES(1, 2) AS t(c1, c2);
  3

> SELECT a[1] FROM VALUES(array(10, 20)) AS T(a);
  20

> SELECT true;
  true

> SELECT (c1, (c2, c3)) FROM VALUES(1, 2, 3) AS T(c1, c2, c3);
  {"c1":1,"col2":{"c2":2,"c3":3}}