Стандартизованные SQL-функции в ArcGIS Online

ArcGIS Online требует, чтобы разработчики использовали стандартизированные SQL-запросы при работе с размещенными векторными слоями. Это позволяет упростить запросы разработчиков и приложений к векторным слоям и помогает предотвращать SQL-атаки. Все приложения ArcGIS автоматически поддерживают стандартизированные SQL-запросы.

Ограничения стандартизированных запросов

  • Стандартизированные запросы применяются ко всей организации и не могут быть отключены для отдельных слоев.
  • Стандартизированные запросы не поддерживаются в соединениях между различными рабочими областями.
  • Подзапросы, такие как выражение where, например, POP_2010 = (SELECT min(POP_2010) FROM counties, не поддерживаются.
  • Запросы от сервисов базы данных, например, Microsoft Azure SQL Database , также не поддерживаются.

Какие SQL-функции поддерживаются в ArcGIS Online?

Если вы разрабатываете приложения и используете специфический для базы данных синтаксис, вам необходимо обновить выражения where в коде вашей программы с целью использования стандартного синтаксиса SQL, поддерживаемого в ArcGIS Online. В следующих таблицах приведены поддерживаемые SQL-функции и их синтаксис. При использовании следующих функций и синтаксиса в приложениях, ArcGIS Online конвертирует их в соответствии со спецификациями базы данных, использующейся в этом векторном слое.

Функции дат

ФункцияОписание

CURRENT_DATE()

Возвращает текущую дату в формате времени UTC.

Способ отображения зависит от используемого клиента. В ArcGIS Online даты отображаются в часовом поясе вашей организации или профиля.

CURRENT_TIME()

Возвращает текущие дату и время в формате UTC (часы, минуты, секунды).

Способ отображения зависит от используемого клиента. В ArcGIS Online время отображается в часовом поясе вашей организации или профиля.

CURRENT_TIMESTAMP()

Возвращает текущие дату и время в формате UTC (часы, минуты, секунды, миллисекунды).

Способ отображения зависит от используемого клиента. В ArcGIS Online время отображается в часовом поясе вашей организации или профиля.

EXTRACT(<unit> FROM <date>)

Возвращает единую часть (<unit>) заданного <date>. Возможные значения <unit> включают год, месяц, день, час и минуту, но не ограничиваются ими.

Примеры

  • EXTRACT(MONTH FROM 12/21/2016) – возвращает 12.
  • EXTRACT(DAY FROM 12/21/2016 12:00) – возвращает 21.
  • EXTRACT(HOUR FROM 12/21/2016 15:00) – возвращает 15.

Числовые функции

ФункцияОписание

ABS(<number>)

Возвращает абсолютное (положительное) значение заданного числа.

CEILING(<number>)

Возвращает наименьшее целочисленное значение, большее или равное указанному числу.

Пример

  • CEILING(12.93) – результат равен 13.

COS(<number>)

Возвращает тригонометрический косинус <number>, которое должно представлять значение угла в радианах.

CAST(<number>AS FLOAT | INT)

Конвертирует число в другой тип. FLOAT конвертирует указанный номер в значение с плавающей запятой с двойной точкой, а INT конвертирует в целое число.

FLOOR(<number>)

Возвращает наибольшее целое значение, меньшее или равное указанному числу.

Пример

  • FLOOR(12.93) – результат равен 12.

LOG(<number>)

Возвращает натуральный логарифм указанного числа.

LOG10(<number>)

Десятичный логарифм указанного числа.

MOD(<number>, <n>)

Возвращает остаток после деления делимого (<number>) на делитель <n>. <n> и <number> должны быть целочисленными.

Примеры:

  • MOD(10, 4) – результат равен 2.
  • MOD(CAST(DBLFIELD AS INT), 4)DBLFIELD – это поле типа с двойной точностью, поэтому для конвертации значений из двойных в целые необходима функция CAST.

NULLIF(<number>, <value>)

Возвращает null, если указанное число равно заданному значению. NULLIF обычно используется, чтобы избежать ошибок деления на ноль в случае, когда для <value> задано 0.

Каждый раз, когда в вычислении встречается значение поля null в любом из его аргументов, результатом вычисления будет null.

Предположим, вам нужно вычислить поле double, как TOTALPOP, деленное на POP18. Если любой объект содержит значение POP18, равное нулю, такое вычисление приведет к ошибке деления на ноль. Вы можете создать фильтр, чтобы скрыть записи, где значение POP18 равно нулю, а затем выполнить необходимые вычисления. Выход – в использовании NULLIF.

  • TOTALPOP / NULLIF(POP18, 0) – возвращает null, если POP18 равно нулю; в противном случае возвращается значение TOTALPOP / POP18.

POWER(<number> , <y>)

Возвращает значение указанного числа в заданной степени (<y>).

ROUND(<number> , <length>)

Округляет число до заданной длины.

Если для <length> задано положительное число, то число округляется до десятичной позиции, определяемой параметром <length>. Если <length> является отрицательным числом, то указанное <number> округляется с левой стороны от десятичной точки.

Примеры

  • ROUND(10.9934,2)—возвращает 10,99.
  • ROUND(10.9964,2)—возвращает 11,00.
  • ROUND(111.0,-2)—возвращает 100,00.

SIN(<number>)

Возвращает тригонометрический синус <number>, которое должно представлять значение угла в радианах.

TAN(<number>)

Возвращает тангенс <number>, которое должно представлять значение угла в радианах.

TRUNCATE(<number>,<decimal_place>)

Сокращает <number> согласно <decimal_place>.

Положительное значение <decimal_place> сокращает до заданной десятичной позиции. Если <decimal_place> является отрицательным числом, <number> округляется с левой стороны от десятичной точки.

Примеры

  • TRUNCATE(111.996,2) – возвращает 111,99.
  • TRUNCATE(111.996,-2)—возвращает 100,00.

Строковые функции

ФункцияОписание

CHAR_LENGTH(<string>)

Возвращает число символов указанного строкового выражения. Результат является целым числом.

Пример

  • CHAR_LENGTH('Redlands') – результат равен 8.

CONCAT(<string1>, <string2>)

Соединяет два строковых значения.

Могут быть предоставлены только две строки. Чтобы объединить более двух строк, смонтируйте последовательные функции CONCAT как показано ниже.

Примеры

  • CONCAT('A', 'B') – результат равен 'AB'.
  • CONCAT('A', CONCAT(':', 'B')) – результат равен 'A:B'.

Значения Null конвертируются в пустую строку.

POSITION(<substring>, <string>)

Возвращает позицию первого появления подстроки в указанной строке. Если подстрока не найдена, то результат - 0.

Примеры

  • POSITION('boat', 'Sailboat') – результат равен 5.
  • POSITION('motor', 'Sailboat') – результат равен 0.

SUBSTRING(<string>, <start>, <length>)

Возвращает часть значения строки; <start> является целочисленным индексом, который определяет, где начинаются возвращаемые символы, а <length> представляет число символов, которые должны быть возвращены.

Примеры

  • SUBSTRING('Sailboat', 5, 4) – результат равен 'boat'.
  • SUBSTRING('Sailboat', 1, 4) – результат равен 'Sail'.
  • SUBSTRING('Sailboat', 5, 100) – результат равен 'boat'.

TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>)

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

Пример

  • TRIM(BOTH ' ' FROM ' San Bernardino ') – результат равен 'San Bernardino'.

Обратите внимание, что второй аргумент отделяют два символа одинарных кавычек с пробелом между ними.

UPPER(<string>)

Возвращает строку, в которой все символы преобразованы в символы верхнего регистра.

Пример

  • UPPER('Sailboat') – результат равен 'SAILBOAT'.

LOWER(<string>)

Возвращает строку, в которой все символы преобразованы в символы нижнего регистра.

Пример

  • LOWER('Sailboat') – результат равен 'sailboat'.