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> включают год, месяц, день, час и минуту, но не ограничиваются ими. Примеры
|
Числовые функции
Функция | Описание |
---|---|
ABS(<number>) | Возвращает абсолютное (положительное) значение заданного числа. |
CEILING(<number>) | Возвращает наименьшее целочисленное значение, большее или равное указанному числу. Пример
|
COS(<number>) | Возвращает тригонометрический косинус <number>, который должно представлять значение угла в радианах. |
CAST(<number> AS FLOAT | INT) | Конвертирует число в другой тип. FLOAT конвертирует указанное число в значение с двойной точностью, а INT конвертирует в целое число. |
FLOOR(<number>) | Возвращает наибольшее целое значение, меньшее или равное указанному числу. Пример
|
LOG(<number>) | Возвращает натуральный логарифм указанного числа. |
LOG10(<number>) | Десятичный логарифм указанного числа. |
MOD(<number>, <n>) | Возвращает остаток после деления делимого (<number>) на делитель <n>. <n> и <number> должны быть целочисленными. Примеры:
|
NULLIF(<number>, <value>) | Возвращает null, если указанное число равно заданному значению. NULLIF обычно используется, чтобы избежать ошибок деления на ноль в случае, когда для <value> задано 0. Каждый раз, когда в вычислении встречается значение поля null в любом из его аргументов, результатом вычисления будет null. Предположим, вам нужно вычислить поле double, которое TOTALPOP делится на POP18. Если любой объект имеет значение POP18, равное нулю, такое вычисление приведет к ошибке деления на ноль. Вы можете создать фильтр, чтобы скрыть записи, где значение равноPOP18 нулю, а затем выполнить необходимые вычисления. Более легкий способ - использовать NULLIF.
|
POWER(<number> , <y>) | Возвращает значение указанного числа, возведенное в указанную степень (<y>). |
ROUND(<number> , <length>) | Округляет число до заданной длины. Если для <length> задано положительное число, то число округляется до десятичной позиции, определяемой параметром <length>. Если <length> является отрицательным числом, то указанное <number> округляется с левой стороны от десятичной точки. Примеры
|
SIN(<number>) | Возвращает тригонометрический синус <number>, который должен представлять значение угла в радианах. |
TAN(<number>) | Возвращает тангенс <number>, который должен представлять значение угла в радианах. |
TRUNCATE(<number>,<decimal_place>) | Сокращает <number> до указанной <decimal_place>. Положительное значение <decimal_place> сокращает до заданной десятичной позиции. Если <decimal_place> является отрицательным числом, то <number> округляется с левой стороны от десятичной точки. Примеры
|
Строковые функции
Функция | Описание |
---|---|
CHAR_LENGTH(<string>) | Возвращает число символов указанного строкового выражения. Результат является целым числом. Пример
|
CONCAT(<string1>, <string2>) | Соединяет два строковых значения. Могут быть предоставлены только две строки. Чтобы объединить более двух строк, вложите последовательные функции CONCAT, как показано ниже. Примеры
Значения Null конвертируются в пустую строку. |
POSITION(<substring>, <string>) | Возвращает позицию первого появления подстроки в указанной строке. Если подстрока не найдена, то результат - 0. Примеры
|
SUBSTRING(<string>, <start>, <length>) | Возвращает часть значения строки; <start> является целочисленным индексом, который определяет, где начинаются возвращаемые символы, а <length> представляет число символов, которые должны быть возвращены. Примеры
|
TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>) | Возвращает строку, в которой все начальные и конечные пробелы удалены. Пример
Обратите внимание, что второй аргумент отделяют два символа одинарных кавычек с пробелом между ними. |
UPPER(<string>) | Возвращает строку, в которой все символы преобразованы в символы верхнего регистра. Пример
|
LOWER(<string>) | Возвращает строку, в которой все символы преобразованы в символы нижнего регистра. Пример
|