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


выражение SQL

Относится к:галочка Databricks SQL галочка Databricks Runtime

Выражение — это формула, которая вычисляет результат, основанный на литералах или ссылках на столбцы, поля или переменные, с использованием функций или операторов.

Синтаксис

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

Квадратные скобки в expr [ expr ] представляют собой фактические квадратные скобки и не обозначают необязательный синтаксис.

Параметры

  • буквальный

    Литерал типа, описанного в разделе Типы данных.

  • маркер именованного параметра

    Именованный и типизированный заполнитель для значения, которое предоставляется API, при отправке SQL-запроса.

  • маркер_неименованного_параметра

    Неименованный и типизированный заполнитель для значения, предоставленного API, отправляющего инструкцию SQL.

  • ссылка на столбец

    Ссылка на столбец в таблице или на псевдоним столбца.

  • ссылка_на_поле

    Ссылка на поле в типе STRUCT.

  • ссылка_на_параметр

    Ссылка на параметр определяемой пользователем функции SQL изнутри тела функции. Ссылка может использовать неполное имя параметра или уточнять имя с помощью имени функции. Параметры составляют самые внешние пределы при определении идентификаторов.

  • Выражение CAST

    Выражение, которое преобразует аргумент к другому типу.

  • Выражение CASE

    Выражение, которое разрешает условное вычисление.

  • COLLATE выражения

    Выражение, придающее явное правило сортировки к строковому выражению.

  • expr

    Выражение само по себе, которое объединено с operator или является аргументом функции.

  • operator

    Унарный или бинарный оператор.

  • expr [ expr ]

    Ссылка на элемент массива или ключ отображения.

  • function_invocation

    Вызов встроенной или пользовательской функции.

    См. function_invocation для получения подробной информации.

  • ( expr )

    Принудительный приоритет, который переопределяет приоритет оператора.

  • ( expr, expr [, … ] )

    Создает struct из двух или более полей. Эта нотация является синонимом функции структуры.

  • scalar_subquery:

    • ( query )

      Выражение, основанное на запросе, которое должно возвращать один столбец и не более одной строки.

На страницах для каждой функции и оператора описываются ожидаемые типы данных. Azure Databricks выполняет неявное приведение к ожидаемым типам с помощью правил типа данных SQL. Если оператор или функция недопустимы для предоставленного аргумента, Azure Databricks вызывает ошибку.

Более подробную информацию о разрешении имен см. в подразделе "Столбец, поле, параметр и переменная".

Константное выражение

Выражение, основанное только на литералах или детерминированных функциях без аргументов. Azure Databricks может выполнить выражение и использовать результирующую константу там, где обычно требуются литералы.

логическое выражение

Выражение с типом результата BOOLEAN. Логическое выражение также иногда называют условием или предикатом.

Скалярный вложенный запрос

Выражение в формате ( query ). Запрос должен возвращать таблицу, которая содержит один столбец и не более одной строки.

Если запрос не возвращает ни одной строки, результат равен NULL. Если запрос возвращает несколько строк, Azure Databricks возвращает ошибку. В противном случае результатом является значение, возвращаемое запросом.

Простое выражение

Выражение, которое не содержит query, например скалярный вложенный запрос или предикат EXISTS.

Примеры

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