Поделиться через


Скалярные выражения в Azure Cosmos DB для NoSQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Предложение SELECT поддерживает скалярные выражения. Скалярное выражение — это сочетание символов и операторов, в результате вычисления которых возвращается одно значение. К скалярным выражениям относятся константы, ссылки на свойства, ссылки на элементы массива, ссылки на псевдонимы и вызовы функций. C помощью операторов скалярные выражения можно объединять в сложные.

Синтаксис

<scalar_expression> ::=  
       <constant>
     | input_alias
     | parameter_name  
     | <scalar_expression>.property_name  
     | <scalar_expression>'['"property_name"|array_index']'  
     | unary_operator <scalar_expression>  
     | <scalar_expression> binary_operator <scalar_expression>    
     | <scalar_expression> ? <scalar_expression> : <scalar_expression>  
     | <scalar_function_expression>  
     | <create_object_expression>
     | <create_array_expression>  
     | (<scalar_expression>)
  
<scalar_function_expression> ::=  
        'udf.' Udf_scalar_function([<scalar_expression>][,…n])  
        | builtin_scalar_function([<scalar_expression>][,…n])  
  
<create_object_expression> ::=  
   '{' [{property_name | "property_name"} : <scalar_expression>][,…n] '}'  
  
<create_array_expression> ::=  
   '[' [<scalar_expression>][,…n] ']'

Аргументы

Description
<constant> Представляет значение константы. Дополнительные сведения см. в разделе Константы.
input_alias Представляет значение, определяемое аргументом input_alias в предложении FROM.
Выражение гарантировано не может принять значение undefined. Значения undefined пропускаются.
<scalar_expression>.property_name Представляет значение свойства объекта. Если свойство не существует или свойство ссылается на значение, которое не является объектом, выражение оценивается как неопределенное значение.
<scalar_expression>'['"property_name"|array_index']' Представляет значение свойства с именем property_name или элемент массива с индексом array_index из массива. Если индекс свойства или массива не существует, или индекс свойства или массива ссылается на значение, которое не является объектом или массивом, выражение оценивается как неопределенное значение.
unary_operator <scalar_expression> Представляет оператор, применяемый к одному значению.
<scalar_expression> binary_operator <scalar_expression> Представляет оператор, применяемый к двум значениям.
<scalar_function_expression> Представляет значение, определяемое результатом вызова функции.
udf_scalar_function Имя определяемой пользователем скалярной функции.
builtin_scalar_function Имя встроенной скалярной функции.
<create_object_expression> Представляет значение, полученное в процессе создания объекта с заданными свойствами и их значениями.
<create_array_expression> Представляет значение, полученное в процессе создания массива с заданными значениями в качестве элементов.
parameter_name Представляет значение указанного имени параметра. Имена параметров должны начинаться со знака \"\@\".

Примеры

Наиболее распространенным примером скалярного выражения является математическое уравнение.

SELECT VALUE
    ((2 + 11 % 7) - 2) / 2
[
  2
]

В следующем примере результат скалярного выражения является логическим:

SELECT
    ("Redmond" = "WA") AS isCitySameAsState,
    ("WA" = "WA") AS isStateSameAsState
[
  {
    "isCitySameAsState": false,
    "isStateSameAsState": true
  }
]

Замечания

  • Все аргументы должны быть определены при вызове встроенной или пользовательской скалярной функции. Если какой-либо из аргументов не определен, функция не вызывается, и результатом является undefined.
  • Любое свойство, назначенное неопределенным значением, пропускается и не включается в созданный объект при создании объекта.
  • Любое значение элемента, назначенное неопределенным значением, пропускается и не включается в созданный объект при создании массива. Этот пропуск приводит к тому, что следующий определенный элемент будет иметь свое место таким образом, чтобы созданный массив не пропускал индексы.