Partilhar via


SELECT - Linguagem de consulta no Cosmos DB (no Azure e no Fabric)

A SELECT cláusula identifica os campos a serem retornados nos resultados da consulta. Em seguida, a cláusula projeta esses campos no conjunto de resultados JSON.

Cada consulta consiste em uma SELECT cláusula e opcionalmente FROM e WHERE cláusulas, de acordo com os padrões ANSI SQL. Normalmente, a FROM fonte na cláusula é enumerada e a WHERE cláusula aplica um filtro na origem para recuperar um subconjunto de itens JSON.

Sintaxe

SELECT <select_specification>  

<select_specification> ::=
      '*'
      | [DISTINCT] <object_property_list>
      | [DISTINCT] VALUE <scalar_expression> [[ AS ] value_alias]  
  
<object_property_list> ::=
{ <scalar_expression> [ [ AS ] property_alias ] } [ ,...n ]

Arguments

Description
select_specification Propriedades ou valor a ser selecionado para o conjunto de resultados.
* Especifica que o valor deve ser recuperado sem fazer alterações. Especificamente, se o valor processado for um objeto, todas as propriedades serão recuperadas.
object_property_list Especifica a lista de propriedades a serem recuperadas. Cada valor retornado é um objeto com as propriedades especificadas.
VALUE Especifica que o valor JSON deve ser recuperado em vez do objeto JSON completo. Esse argumento, ao contrário <de property_list> não encapsula o valor projetado em um objeto.
DISTINCT Especifica que duplicatas de propriedades projetadas devem ser removidas.
scalar_expression Expressão que representa o valor a ser calculado.

Tipos de devolução

Retorna os campos ou valores projetados conforme especificado.

Examples

Esta seção contém exemplos de como usar essa construção de linguagem de consulta.

Selecionar valores de cadeia de caracteres estática

Neste exemplo, dois valores de cadeia de caracteres estática e retorna uma matriz com um único objeto contendo ambos os valores. Como os valores não são nomeados, um número gerado sequencial é usado para nomear o campo json equivalente.

SELECT
  "Cosmic", "Works"
[
  {
    "$1": "Cosmic",
    "$2": "Works"
  }
]

Campos do projeto

Neste exemplo, a projeção JSON é usada para ajustar a estrutura exata e os nomes de campo para o objeto JSON resultante. Aqui, um objeto JSON é criado com campos chamados identifier e model. O objeto JSON externo ainda não tem nome, portanto, um número gerado ($1) é usado para nomear esse campo.

SELECT {
  identifier: p.name,
  model: p.sku
}
FROM
  products p
[
  {
    "$1": {
      "identifier": "Remdriel Shoes",
      "model": "61506"
    }
  },
  {
    "$1": {
      "identifier": "Tirevy trunks",
      "model": "73402"
    }
  },
  ...
]

Cadeia de caracteres estática do projeto

Neste exemplo, a palavra-chave VALUE é usada com uma cadeia de caracteres estática para criar uma matriz de cadeias de caracteres como resultado.

SELECT VALUE
  "Cosmic Works"
[
  "Cosmic Works"
]

Projeção complexa

Neste exemplo, a consulta usa uma combinação de uma SELECT cláusula, a VALUE palavra-chave, uma FROM cláusula e projeção JSON para executar uma consulta comum com os resultados transformados em um objeto JSON para o cliente analisar.

SELECT VALUE {
  name: p.name,
  link: p.metadata.link,
  firstTag: p.tags[0]["value"]
}
FROM
  products p
[
  {
    "name": "Remdriel Shoes",
    "link": "https://www.adventure-works.com/remdriel-shoes/68719521615.p",
    "firstTag": "suede-leather-and-mesh"
  },
  {
    "name": "Tirevy trunks",
    "link": "https://www.adventure-works.com/tirevy-trunks/68719520573.p",
    "firstTag": "polyester"
  },
  ...
]

Observações

  • A SELECT * sintaxe só é válida se FROM a cláusula tiver declarado exatamente um alias. SELECT * fornece uma projeção de identidade, que pode ser útil se nenhuma projeção for necessária. SELECT * só é válida se FROM a cláusula for especificada e introduzida apenas uma única fonte de entrada.
  • Ambos SELECT <select_list> são SELECT * açúcar sintático e podem ser expressos usando afirmações simples SELECT .
  • A expressão SELECT * FROM ... AS from_alias ... é equivalente a SELECT from_alias FROM ... AS from_alias ....
  • A expressão SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] é equivalente a SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].